当前位置: 首页 > 知识库问答 >
问题:

从表中删除行时MySQL完整性约束违反异常

李弘光
2023-03-14

在非常简单的表上运行下面的sql语句时,我收到了下面的错误。这里使用的唯一外键是表run中的,外键是runs.sample_id,它引用了samples.id。我不确定为什么我会收到这个错误,因为我试图在删除它们所依赖的样本之前删除所有运行。下面的代码:

java代码:

String deleteRunsQuery="DELETE FROM运行";//从运行表中删除行String deleteSamplesQuery="DELETE FROM样本";//从样本表中删除行

stmt。executeUpdate(删除Runsquery);

stmt。executeUpdate(deleteSamplesQuery);

例外情况是:

gc_image_relational4. MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(com.mysql.jdbc.exceptions.jdbc运行,CONSTRAINTruns_ibfk_1FOREIGN KEY(sample_id)REFERENCES样本id))在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)在sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)在sun.reflect.委托ConstructorAccessorImpl.newInstance(Unknown Source)在java.lang.reflect.Constructor.newInstance(Unknown Source)在com.mysql.jdbc.til.handleNewInstance(U)在com.mysql.jdbc.Util.getInstance(Util.java:383)在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973)在com.mysql.jdbc.MysqlIO. check ErrorPkets(MysqlIO. java: 3847)

共有2个答案

沈单弓
2023-03-14

检查您的触发器OnDelete。可能您在删除后尝试添加新记录并收到密钥复制错误

司马自明
2023-03-14

恐怕没有足够的代表发表评论。也许这算是一个答案:

你的问题被标记为mysql,但你没有明确说明所使用的编程语言;显然是Java。AFAIK Java是异步工作的,即引擎在执行下一个语句之前不会等待语句完成。在这种情况下,这意味着第二条DELETE语句(在samples表上)将在MySQL引擎完成删除所有运行之前触发。在第一个回调中触发第二个DELETE可以避免这个问题,也可以避免任何其他方法来同步这两个语句。我不知道你会怎么做,我不是Java程序员。其他人可能会帮你。

 类似资料:
  • 照明\database\queryexception SQLSTATE[23000]:完整性约束违反:19 NOT NULL约束失败:users.password(SQL:插入“users”(“name”、“email”、“username”、“updated_at”、“created_at”)值(MADHUP KUMAR,Chandrashivam99@gmail.com,Vansh123,20

  • 我正在使用Hibernate 4.0最终版和ojdbc6来开发我的网络应用程序。一切都好,除了当我试图插入一个新的父母/孩子的关系。首先,这些是实体: 让我们看看这两个场景: 员工已存在,我尝试向其添加新地址-- 这是事务处理程序: 你可以想象,2.b的案子是我关心的。我已经调试了事务,这是我调用保存()方法(在DAO类中)时得到的: 会议结束了。saveOrUpdate(employee)方法成

  • 问题内容: 我正在尝试使用ALTER IGNORE TABLE + UNIQUE KEY从MySQL表中删除重复项。MySQL文档说: IGNORE是标准SQL的MySQL扩展。如果新表中的唯一键上有重复项,或者在启用严格模式时出现警告,则它控制ALTER TABLE的工作方式。如果未指定IGNORE,则在发生重复键错误时,副本将中止并回滚。如果指定了IGNORE,则只有第一行用于唯一键重复的行。

  • 我有一个由四个表组成的数据库。关系模式如图所示: 下面是几行: 现在我正试图删除所有者id为OW1的所有者。因为id是所有者表中的主键,而在其他表中是外键,所以不允许我删除该行。以下是我尝试过的SQL: 它返回: 我不允许在关系图中设置删除规则为“级联”。请帮助:(

  • 问题内容: 我正在尝试解析Web请求并将其保存到数据库。我有3个模型,第一个节点是virtualDocument。这是uniq表(根据请求url)。VirtualRequest表具有所有erquest主体,而HttpHeaderList表根据其virtualRequest bean ID具有所有thhp标头。 当我尝试保存第一个日志时,出现了这样的错误; 这是VirtualDocument bea

  • 我正在使用Spring和Hibernate,我得到了这个例外。以下是我试图获得的:我有User和UserSettings类,它们以OneToMany和ManyToOne注释为界,如下所示: 现在,我想为用户添加设置,我是这样做的: 问题来了:UserSettings中的用户持有旧设置和新设置的集合(设置,我刚刚创建并想要添加),但旧设置持有用户的集合,其中没有新设置。我想这就是为什么我会遇到异常,