mysql 执行错误1395_主义 - 常规错误:1395无法删除连接视图

本文讨论了在一个复杂的用户-角色关联表结构中,因不当的数据存储方式导致从视图删除数据时遇到的General Error 1395错误。文章详细介绍了表结构、视图创建方法及实体映射,并提供了具体的删除功能代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

General error: 1395 Can not delete from join view

我的表结构是:

user

----

aid

name

email

...

role

-----

rid

name

users_roles

-----------

uid - foreign key references User.aid

rid - foreign key, references Role.rid

的用户 - 角色表具有多到多的关系,与所述users_roles作为映射表。然而,之前编码的开发人员选择在users_roles中将逗号分隔为逗号分隔的角色ID,而不是为每个(uid,rid)对使用不同的行。

因此,为了合理界定主义的关联,我创建了一个视图UsersRolesView如下:

CREATE view `users_roles_view` AS SELECT `r`.`rid` AS `rid`, `ur`.`uid` AS `uid`

FROM (`users_roles` `ur` JOIN `role` `r`)

WHERE (find_in_set(`r`.`rid`, `ur`.`rid`) > 0)

我对用户实体学说映射XML看起来是这样的:

当我尝试删除用户实体时,出现Doctrine错误。删除用户功能如下:

function removeUser($aid)

{

$admin = $GLOBALS['em']->find('Admin', $aid);

$GLOBALS['em']->remove($admin);

$GLOBALS['em']->flush();

}

完全例外:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1395 Can not delete from join view 'users_roles_view'' in vendor\doctrine\dbal\lib\Doctrine\DBAL\Connection.php on line 754

2013-01-12

janenz00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值