文章目录 一、查询所有表的外键 二、启用/禁用外键约束 三、删除外键 一、查询所有表的外键 select table_name, constraint_name from user_constraints...where constraint_type = 'R'; 二、启用/禁用外键约束 alter table FM_CLIENT enable constraint CLIENT_TYPE_2019;...//启用 alter table FM_CLIENT disable constraint CLIENT_TYPE_2019; //禁用 三、删除外键 alter table FM_CLIENT drop
今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。...SET FOREIGN_KEY_CHECKS=0; 删除,更新数据, 恢复外键 SET FOREIGN_KEY_CHECKS=1; 另:查看当前 FOREIGN_KEY_CHECKS的值 SELECT
0904自我总结 django模型中有外键关系的表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...:作者删除详情删除,详情删除作者保留 2)作者找详情用 外键related_name(detail),详情找作者用 外键字段(author) 3)db_constraint断开表关联,on_delete...(多的一方):出版社删除书外键不动,书删除没有任何影响 2)出版社找书用 外键related_name(books),书找出版社 外键字段(publish) 3)db_constraint断开表关联...,on_delete规定逻辑关联删除动作,models.DO_NOTHING关联无动作 三.以外键字段关联 1)断关联,删除关联表记录,外键值置空 db_constraint=False, on_delete...', db_constraint=False, ) 1)关系字段放在任意一方都可以:出版社删除或书删除彼此不影响,但关系表一定级联删除 2)正向找 外键字段,反向找 外键字段related_name
MySQL 对外键约束的实现与 SQL 标准在以下关键方面有所不同: 如果父表中有多行具有相同的引用键值,InnoDB会像其他具有相同键值的父行不存在一样执行外键检查。...在插入、删除或更新多行的 SQL 语句中,外键约束(如唯一约束)会逐行检查。在执行外键检查时,InnoDB会在必须检查的子记录或父记录上设置共享的行级锁。...这意味着不可能使用外键删除引用自身的行。 没有存储引擎,包括InnoDB,识别或执行引用完整性约束定义中使用的MATCH子句。...InnoDB 和 NDB 表支持外键。参见 1.6.3.2 “外键约束”。...InnoDB和NDB表支持外键。
REFERENCES `bar` (`foo_id`),需要指定:--alter "DROP FOREIGN KEY _fk_foo" --alter-foreign-keys-method 如何把外键引用到新表...需要特殊处理带有外键约束的表,以保证它们可以应用到新表.当重命名表的时候,外键关系会带到重命名后的表上。 该工具有两种方法,可以自动找到子表,并修改约束关系。...drop_swap: 执行FOREIGN_KEY_CHECKS=0,禁止外键约束,删除原表,再重命名新表。...2, 如果重命名表出现错误,也不能回滚了.因为原表已经被删除。 none: 类似"drop_swap"的处理方式,但是它不删除原表,并且外键关系会随着重命名转到老表上面。...因为如果更新的表Master上存在,而Slave上不存在,会导致复制的失败。使用–no-check-replication-filters选项来禁用该检查。
pt-online-schema-change 的 工作过程解析如下: 如果存在外键,根据 alter-foreign-keys-method 参数的值,检测外键相关的表,做相应设置的处理。...Rename 原表到 old 表中,在把临时表 Rename 为原表,默认最后将原表删除,将原表上所创建的触发器删除。 因此,这个工具有如下限制: 表必须是单一列的主键或者单一唯一键。...若表存在外键,则需要指定参数 --alter-foreign-keys-method=auto|rebuild_constraints|drop_swap|none,而且外键不能有错误 表上不能有触发器..._test,t=t_device --execute --alter-foreign-keys-method=auto ③、测试记录 在测试数据库上随便导入了一份现网的数据,居然就让我碰到了触发器和外键...对象表存在外键!
405 (方法禁用) 禁用请求中指定的方法。 406 (不接受) 无法使用请求的内容特性响应请求的网页。...则在升级到4.1.4及更高时需要重建表,因为存储格式发生变化了。 字符串根据标准SQL来比较:比较之前不删除末尾的空格,以前用末尾空格扩展了比较短的字符串。...PERL兼容正则匹配除了换行符外的任意一个字符 ....MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。综述,就可以根据数据表不同的用处是用不同的存储类型。...InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。
不安全,但是InnoDB是线程安全的 2、MySIAM锁的粒度是表,而InnoDB支持行级锁定,所以InnoDB多线程时,速度更快 3、MySIAM不支持外键,InnoDB...支持外键 4、MySIAM相对简单,效率高于InnoDB,小型应用可以考虑MySIAM InnoDB存储可以提交、回滚、崩溃恢复,但是写操作效率会底下,并占用更多的资源与内存以保留数据和索引...2、禁用唯一性检查:插入记录时,如果有唯一性检查,如果数据量很大,就会严重影响速度。当大量数据插入后,在开启唯一性检查就行。...3、禁用外键检查: 同禁用唯一性检查一样。 4、批量插入数据:一条Sql插入多个记录。 5、禁止自动提交:把事务的自动提交关掉,数据插入完成再打开事务的自动提交。...索引的类型 不支持事务,不支持外键,查询、插入可以选择这个存储引擎 表将存储再三个文件中 1) frm:存储表定义(表结构等信息)
这是首选的方式,如果一张或多张子表过大会导致 ALTER 需要很长时间,子表会被阻塞; drop_swap:禁用外键约束 (FOREIGN_KEY_CHECKS=0) ,在进行重命名新父表之前删除原父表...子表有任何外键关联父表都将变成关联一张不存在的表,这会使得子表的外键约束失效,可以通过 SHOW ENGINE INNODB STATUS 查看。...需要为外键指定名称为 _forigen_key,因为在创建新表时候默认为新表上的外键创建这样的名称,如果没这样指定则无法删除。...' 当 --alter-foreign-keys-method=drop_swap 时,先禁用外键约束检查,删除旧表,将临时表重命名为原旧表名,完成变更 ' 200 Query SET foreign_key_checks...,根据工具指定选项进行外键处理; 删除旧表; 删除旧表上触发器。
存储引擎的实质就是如何实现存储数据,为存储数据建立索引以及查询、更改、删除数据等技术实现的方法。 MySQL支持插件式的表存储引擎,这种独有的插件式体系架构,让存储引擎有了依赖应用的多样性。...5、采用MyISAM存储引擎不支持外键约束,只支持全文索引。 6、采用MyISAM存储引擎进行数据单独写入或者读取,速度较快且占用资源相对要少。...7、MyISAM存储的文件类型: .frm 文件存储表定义; 数据文件扩展名为.MYD(MYDATA); 索引文件扩展名为.MYI(MYIndex); InnoDB存储引擎特点 1、支持事务处理...6、支持分区、表空间,类似Oracle数据库。 7、支持外键约束,MySQL5.5以前不支持全文索引,后面的版本支持。 8、适合对硬件资源要求较高的场合。...yum install perl-DBI perl-DBD-MySQL -y //安装操作运行库 默认情况下只能将已存在的InnoDB的存储引擎更改为MyISAM形式,若需要反过来更改需要更改命令执行脚本
pt工具介绍 Percona Toolkit简称pt工具,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性、检查重复索引、定位IO占用高的表文件、在线DDL等,DBA熟悉掌握后将极大提高工作效率...介绍 1.找出重复的索引和外键 pt-duplicate-key-checker 这个工具会将重复的索引和外键都列出来,并生成了删除重复索引的语句,非常方便 2.执行alter的时候不会阻塞写和读取操作...pt-fk-error-logger 通过SHOW INNODB STATUS提取和保存mysql数据库最近发生的外键错误信息。...可以通过参数控制直接打印错误信息或者将错误信息存储到数据库的表中.然而现在很少用外键了,也不建议用外键. 14.查看SHOW GLOBAL STATUS的多个样本的信息 pt-mext 实际意义不大...这个工具默认的会删除源中的数据。使用的时候请注意。 28.查找mysql表并执行指定的命令,和find命令类似。
待休眠时间结束之后再次检查主从延迟时长,检查方法是通过从库查询的'Seconds_Behind_Master'值来确定。...--no-delete 指定不删除已被归档的表数据。 --progress 指定每多少行打印进度信息,打印当前时间,已用时间以及多少行进行归档。...--skip-foreign-key-checks 指定使用语句SET FOREIGN_KEY_CHECKS = 0禁用外键检查。 三,安装部署mysql_archiver常见错误 1....perl-DBD-MySQL 四.功能优化 为工具mysql_archiver添加只删除不备份的功能,即只删除源库上的数据,而不用迁移。...AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='数据库归档基础信息表'; 2.修改备份脚本 #!
; pt-fk-error-logger 作用:记录MySQL中的外键错误。...charset=s, -A` 默认字符集 - `--[no]check-alter` 解析指定的 --alter 并尝试警告可能的意外行为(默认是) - `--[no]check-foreign-keys` 检查自引用外键...` 仅检查与原始表位于同一模式的外键 - `--password=s, -p` 连接时使用的密码 - `--pause-file=s` 当指定的文件存在时,执行将暂停 - `--pid=s` 创建给定的...--tables-regex=s 仅校验名称与此 Perl 正则表达式匹配的表 示例: pt-table-checksum --set-vars innodb_lock_wait_timeout=120...no]foreign-key-checks 启用外键检查(SET FOREIGN_KEY_CHECKS=1)(默认为 yes) --function=s 用于校验和的哈希函数 --help 显示帮助信息并退出
当该工具重命名原始表以让新表取而代之时,外键跟随被重命名的表,因此必须更改外键以引用新表。 支持两种方式:rebuild_constraints 和 drop_swap 。...rebuild_constraints 此方法使用 ALTER TABLE 删除并重新添加引用新表的外键约束。这是首选的方式,除非子表(引用 DDL 表中列的表)太大,更改会花费太长时间。...在某些情况下,MySQL 还会自动重命名外键所需的索引。 drop_swap 禁用外键检查(FOREIGH_KEY_CHECKS=0),先删除原始表,然后将新表重命名到原来的位置。...任何引用原表的外键将会指向一个不存在的表,这样会造成外键违规,在 show engine innodb status 中将会有类似下面的输出: Trying to add to index `idx_fk_staff_id...提供了这种处理外键约束的方法,以便数据库管理员可以根据需要禁用该工具的内置功能。 --only-same-schema-fks 只在与原始表相同数据库的表上检查外键。
所以说,外键一定是在从表中创建,从而找到与主表之间的联系;从表负责维护二者之间的关系。 2.外键的使用需要满足下列的条件:(这里涉及到了InnoDB的概念) 1....两张表必须都是InnoDB表,并且它们没有临时表。 注:InnoDB是数据库的引擎。MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外键。 2....建立外键关系的对应列必须具有相似的InnoDB内部数据类型。 3. 建立外键关系的对应列必须建立了索引。 4....对数据大批量导入时,它会边插入数据边建索引,所以为了提高执行效率,应该先禁用索引,在完全导入后再开启索引。 InnoDB:支持外键约束,支持事务。...ON DELETE后面的四个参数:代表的是当删除主表的记录时,所做的约定。 RESTRICT(限制):如果你想删除的那个主表,它的下面有对应从表的记录,此主表将无法删除。
其中Value显示为disabled的记录表示数据库支持此引擎,而在数据库启动时被禁用。...(一)MyISAM 它不支持事务,也不支持外键,优点是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。...2)外键约束: MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。 ...当某个表被其它表创建了外键参照,那么该表对应的索引或主键被禁止删除。 ...可以使用set foreign_key_checks=0;临时关闭外键约束,set foreign_key_checks=1;打开约束。
拥有较高的插入,查询速度,但不支持事务; InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定、支持事物、外键等功能, MySQL 5.5 起成为默认数据库引擎; InnoDB事务型数据库的首选引擎...InnoDB提供事务支持事务,外部键等高级数据库功能,执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,支持行锁。...MYSQL数据库应用索引 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。...这么做的好处:一是简化了 MySQL 对这个索引的管理工作,这个索引也因此而变得更有效率;二是 MySQL 会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;...4) 外键索引 如果为某个外键字段定义了一个外键约束条件,MySQL 就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。
51、经常检查和优化表。 52、经常做重写 InnoDB 表的优化。 53、有时,增加列时,先删除索引,之后在加上索引会更快。 54、为不同的需求选择不同的存储引擎。...81、使用 DROP TABLE ,然后再 CREATE TABLE ,而不是 DELETE FROM ,以删除表中所有数据。 82、最小化你要查询的数据,只获取你需要的数据,通常来说不要使用 *。...88、备份过程中停止数据的复制,以防止出现数据依赖和外键约束的不一致。 89、彻底停止MySQL之后,再从数据文件进行备份。...95、临时禁用外键约束,来提高导入的速度。 96、临时禁用唯一性检查,来提高导入的速度。 97、每次备份完后,计算数据库/表数据和索引的大小,监控其增长。...98、使用定时任务(cron)脚本,来监控从库复制的错误和延迟。 99、定期备份数据。 100、定期测试备份的数据。
领取专属 10元无门槛券
手把手带您无忧上云