精华内容
下载资源
问答
  • title: 删除带外键的表【foreign key constraint fails】报错date: 2018-08-02 21:59:06tags: 数据库遥想当时正在学hibernate的时候,刚好学到了一对多,多对多的关联操作。时间也正是刚好在那是有了一个项目,把各...

    title: 删除带外键的表【foreign key constraint fails】报错

    date: 2018-08-02 21:59:06

    tags: 数据库

    遥想当时正在学hibernate的时候,刚好学到了一对多,多对多的关联操作。时间也正是刚好在那是有了一个项目,把各表的间的结构还理清,俗话说学到就要用到,就把这些表的结构都能配置级联关系的都把它配上。没想到就在这里给自己放了个小坑。前几天在一个帖子中看到别人说,尽量少配些ORM约束,数据库的外键约束什么的。当时还不以为然。没想到我就遇到了这个问题,或许对数据库操还是不是很熟悉的人约束真的不要配太多。不过有自然有其的好处就是。

    今天在删除一张表的数据的时候报了如下错误:

    09:55:49.144 [http-nio-8080-exec-6] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Cannot delete or update a parent row: a foreign key constraint fails (`checkin`.`right_umenu`, CONSTRAINT `FKnmg8itd642tdyn6qh1q42h60r` FOREIGN KEY (`menu_detailPid`) REFERENCES `menu_detail` (`id`))

    09:55:49.151 [http-nio-8080-exec-6] ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [could not execute statement]

    org.hibernate.exception.ConstraintViolationException: could not execute statement

    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59)

    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)

    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)

    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95)

    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:207)

    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45)

    at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3198)

    .......

    ​在网上查找后得到的结果和我认为的是一样的,就是外键的问题引发的(当然报错里信息都写了foreign key什么的还不知道,那怎么行(●ˇ∀ˇ●))。网上是说:表之间强制生成了外键,在删除操作时,数据库会检查表间的关系导致无法删除。

    解决办法:

    SET foreign_key_checks = 0; // 先设置外键约束检查关闭

    drop table table1; // 删除表,如果要删除视图,也是如此

    SET foreign_key_checks = 1; // 开启外键约束检查,以保持表结构完整性

    原理:

    MySQL的环境变量中存在一个foreign_key_checks,这是默认检查外键的配置项,如果将其设置为0,则表示不检查外键约束。查看foreign_key_checks的值:

    show VARIABLES like "foreign%";

    然而,然而。我即使把外键约束检查关闭,但是在打开检查的地方又还会报错。这我就无奈了。

    不过我在尝试时把,外键的删除项由 RESTRICT 改为 CASCADE 时不但能删除且不影响我的另一个方法的执行,而且的更方便的执行了我想写的方法。

    后面又继续查,这是数据库定义外键的一个选项,操作时可以知道update 和delete 后面可以跟的词语有四个 :

    no action , set null , set default ,cascade 。

    no action 表示 不做任何操作,

    set null 表示在外键表中将相应字段设置为null

    set default 表示设置为默认值(restrict)

    cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除

    所以当我如此设置的时候就把想做的级联删除也都执行了,数据库的很多东西都还要去补啊。

    展开全文
  • 查询所有表 select table_name from user_tables; 删除带外键的表 drop table 表名 cascade constraints
    查询所有表
    select table_name from user_tables;


    删除带外键的表
    drop table 表名 cascade constraints
    展开全文
  • MySQL 如何删除外键约束的表数据 今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 ...

    MySQL 如何删除有外键约束的表数据

    今天删除数据库中数据,提示因为设置了foreign key,无法修改删除
    可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。

    SET FOREIGN_KEY_CHECKS=0;

    删除,更新数据,

    恢复外键

    SET FOREIGN_KEY_CHECKS=1;

    另:查看当前 FOREIGN_KEY_CHECKS的值

    SELECT @@FOREIGN_KEY_CHECKS;

    展开全文
  • 比如有一个存放用户信息 一个存放留言信息 其中定义外键为用户id 当要删除用户时候 怎么用JDBC来实现删除用户以及他对应留言。
  • 都将其表的外键删除在进行删除或修改 E.G : ALTER TABLE DROP FOREIGN KEY ;//先删除外键 DROP TABLE ;//删除表 OR ALTER TABLE ENGIER = ; SHOW ENGIER;//你可以用此查找你数据库所拥有引擎

    都将其表的外键删除在进行删除或修改

    E.G : ALTER TABLE <表名> DROP FOREIGN KEY <键名>;//先删除外键

    DROP TABLE <表名>;//删除表

    OR

    ALTER TABLE <表名> ENGIER = <引擎>;

    SHOW ENGIER;//你可以用此查找你的数据库所拥有的引擎


    展开全文
  • 展开全部1、创建主键,test_class,并建立class_id字段为主键;create table test_class(class_id number, class_name varchar2(20));-- Create/Recreate indexesalter table TEST_CLASSadd constraint P_CLASS_ID...
  • 用什么方法删除所有带外键的表记录,不用delete 还有其它方法吗???
  • 删除表数据第二种:(保留外键约束)SET FOREIGN_KEY_CHECKS = 0;TRUNCATE TABLE 表名;SET FOREIGN_KEY_CHECKS = 1;----------------------------------------------------------------------------------------TR...
  • 书写一个脚本 变量修改一下 执行这个脚本 ...echo "###导出db要删除表的sql" echo "SET FOREIGN_KEY_CHECKS = 0;" > ./db.sql mysqldump --add-drop-table --no-data -h${db} -P${dport} -u${dusername} -p$
  • create table Type(tpid int PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1,...创建表的sql如上,想删除这2个表里数据,总是提示有外键约束。 用是Derby数据库,但是sql和oracle数据库应该相同。
  • Mysql 删除外键约束

    2018-03-26 19:42:17
    引言:MySQL 直接删除带外键约束的表时,常常会报下面的错误:或者是:Cannot truncate a table referenced in a foreign key constraint !解决方法:SET FOREIGN_KEY_CHECKS = 0; TRUNCATE table $table_name; ...
  • 1首先删除所有外检约束 --删除所有外键约束 DECLARE c1 cursor forselect 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; 'from sysobjectswhere xtype = 'F'open c1declare @c1 ...
  • 今天突然发现客户里面姓名为空记录竟然有13万之多,日期几乎都是5月31日进来,在原始数据文件中又没有这些记录,真不知道怎么产生,因为这些记录常常导致一个身份证号进来返回是一条无名记录,客户举报...
  • 2,执行ORACLE自带DDL生成函数,生成外键重建脚本。 3,删除时要加上级联子句,否则删不掉。 4,重建主,并建上主键约束。 5,从备份中导入主数据 6,执行外键脚本。 7,检查没有错误,结束。 ---...
  • truncate和delete删除外键约束的表

    千次阅读 2013-11-28 12:37:53
    知识点:TRUNCATE TABLE 在功能上与不 WHERE 子句 DELETE 语句相同:二者均删除表全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志...
  • 报错内容如:1701 - Cannot truncate a table referenced in a foreign key constraint 一、为什么要使用truncate ...Mysql中如果之间建立了外键约束,则无法删除表及修改结构 三、解决方案 在Mysql中取...
  • 1.比如要修改CourseInfo表的Cname字段长度 2.点保存 出现如下提示: 3.点是后,出现如下错误。(之前执行了一段时间) 4.单击确定之后:提示约束关系删除失败 解决办法: 一。手动删除:约束关系: 二。再次...
  • 无法截断 'TABLE_NAME',因为该正由 FOREIGN KEY 约束引用。## SQL Server 对策### 案11. 删除数据;2. 重置自增种子序列(如果有自增字段话);```sqlDELETE FROM [TABLE_NAME]DBCC CHECKIDENT ('TABLE_NAME...
  • EF+Mysql带外键的迁移

    2019-09-26 21:03:09
    1、什么是迁移??...查看数据库中有没有 __MIgrationHistory 这个,当然把它删除就不具备迁移功能了,通常EF+Codefirst模式都是自带数据迁移功能,默认,这就时创建“空code first”时...
  • 1、什么是迁移?...查看数据库中有没有 __MIgrationHistory 这个,当然把它删除就不具备迁移功能了,通常EF+Codefirst模式都是自带数据迁移功能,默认,这就时创建“空code first”时就是这...
  • 关于mysql外键的删除

    2020-03-05 19:59:53
    给一个创建主键之后,查看结构时,在key这一列会显示主键约束。当删除主键时,key所对应主键约束就变为了空白。...如上图所示,删除有约束删除后约束已经没有了。所以当前外键实际...
  • Cannot delete or update a parent row: a foreign key constraint fails,出现这个报错原因是:想要删除的数据或与其他数据或拥有主外键关系,Mysql规定,为了维护结构稳定,禁止执行该操作,即外键约束...
  • 为了降低外键约束对数据库造成的性能影响,我们需要将外键删除,下文描述删除外键的工程。注:在互联网系统设计中尽量保持数据库的原子性设计。一、查找创建外键的 sql 语句在 Activiti 中databaseSchemaUpdate...
  • 查看外键名称查看数据库外键名字

    千次阅读 2019-10-29 12:46:35
    我们要进行删除外键时,需要知道外键的名字,那么如何查看数据库外键呢?有2种方式查看: 1.过查看的方式查看外键名字; 2.通过mysql自带的系统查看外键。 更多精彩请访问本文源地址: ...
  • mysql的外键设置注意点

    千次阅读 2018-05-20 21:58:07
    外键是用于两个的数据之间建立连接,可以是一列或者多列,即一个可以有一个或多个外键。外键可以不是这个的主键,但必须和...有主键的那张表称为父,含外键的是子,必须先删除外键约束才能删除。...
  • 这次写一个项目,涉及到多表的外键约束和级联删除的问题,才研究了一下.用vs2005里面自带SqlExpress,在VS里面作数据库,感觉不是很方便(废话,都方便了,那sqlserver2005 dev 卖给谁去!)我建了,然后建了关系,设定了...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 229
精华内容 91
关键字:

删除带外键的表