首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql - 删除出现: Cannot delete or update a parent row: a foreign key constraint fails

现象 MySQL在删除一张出现 ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint...fails 原因 可能是在Mysql中,删除的和另一张设置了foreign key的关联,造成无法更新或删除数据; 解决方案 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。...禁用外键约束 SET FOREIGN_KEY_CHECKS = 0; 然后就可以删除了 删除完成后再启动外键约束 SET FOREIGN_KEY_CHECKS = 1; 查看当前FOREIGN_KEY_CHECKS...的值可用如下命令 SELECT @@FOREIGN_KEY_CHECKS; 注意 这样设置只会影响当前会话, 不会影响全局 若想设置全局变量的话,可以这样写 SET GLOBAL FOREIGN_KEY_CHECKS

1.6K10

使用MySQL Workbench建立数据库,建立新的,向中添加数据

我用的MySQL数据库,使用MySQL Workbench管理。下面简单介绍一下如何使用MySQL Workbench建立数据库,建立新的,为添加数据。...一下刚刚建立好的数据库mydatabase,然后再创建,不然会出错,右键点击Tables 然后点击Create new tables ,填写名,以及表列的信息,之后点击 apply ,一张就建完了...PK: primary key (column is part of a pk) 主键 NN: not null (column is nullable) 是否为空 -UQ: unique (...column is part of a unique key) 外键 AI: auto increment (the column is auto incremented when rows are...Numeric Types”) 出现如下页面 接下来向建好的tb_student中添加数据 右键点击tb_student,再点击select rows limit 1000 在mysql workbench

9.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL 临时建立及删除临时的使用方式

MySQL 临时在我们需要保存一些临时数据是非常有用的。临时只在当前连接可见,当关闭连接Mysql会自动删除并释放所有空间。...临时MySQL 3.23版本中添加,如果你的MySQL版本低于 3.23版本就无法使用MySQL的临时。不过现在一般很少有再使用这么低版本的MySQL数据库服务了。...MySQL临时只在当前连接可见,如果你使用PHP脚本来创建MySQL临时,那每当PHP脚本执行完成后,该临时也会自动销毁。...如果你使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时,那么只有在关闭客户端程序时才会销毁临时,当然你也可以手动销毁。...如果你退出当前MySQL会话,再使用 SELECT命令来读取原先创建的临时数据,那你会发现数据库中没有该的存在,因为在你退出该临时已经被销毁了。

10.6K11

MySQL数据库语法_mysql建立学生数据库

mysql数据库基本语法 DDL操作 创建数据库 语法:create database 数据库名; 查看所有数据库 语法:show databases; 切换(使用)数据库 语法:use + 数据库名...; 查看表的结构 语法:desc 名; 添加字段 语法:alter table 名 add 字段名 字段类型 删除字段 语法:alter table 名 drop 字段名 修改名 语法:...rename table 旧的名 to 新的名 修改字段类型 语法:alter table 名 modify 字段名 新的字段类型 字段重命名 语法:alter table 名 change...,相当于先drop这张在create这张 约束 主键约束特点:唯一性,非空性 设置主键和自动增长 主键:在创建,在要设置为主键的字段后面 添加上主键(primary key) 自增长:在创建...auto_increment 非空约束:不能为空 在约束位置加上 not null 外键约束: 要基于主表的主键去创建 在字段定义后 添加外键 Constraint (外键名称) foreign key

15.2K30

MySQL在删除IO错误原因分析

insert buffer背景知识 insert buffer是一种特殊的数据结构(B+ tree),当辅助索引页面不在缓冲池中,它会将更改缓存起来,稍后在页面被其他读取操作加载到缓冲池中合并。...如果检测到大于0,意味着还有依赖的I/O未完成,睡眠20ms后重试; 此时认为已经没有冲突的操作了,刷出所有脏页面或删除所有给定的空间的页面; 从空间缓存删除指定space的记录; 删除对应数据文件...不出意外的话,在打中断点必然有线程在执行对应的删除操作。...具体代码参考MariaDB commit:8edbb1117a9e1fd81fbd08b8f1d06c72efe38f44 影响版本 察看相关信息,这个问题是修改Bug#19710564删除空间版本引入的...,space id占4个字节,低于0xFFFFFFF0UL,分配读取系统空间保存的值,然后加一,具有唯一性)。

1.8K20

如何在修改Mysql结构不影响读写?

线上数据库难免会有修改结构的需求,MySQL 在修改结构时会锁,这就会影响读写操作,小还好,一会儿就修改完成了,但大会比较麻烦,下面看一个解决方案 解决思路 (1)新建一个,结构就是要修改后的结构...(2)在旧表上建立触发器,旧表更新数据同步到新 (3)把旧表数据复制到新 (4)数据同步完成后,执行重命名操作,交换新旧表 (5)删除旧表及触发器 实现方式 这个解决思路已经有了很成熟的工具,数据库服务公司...Percona 提供了 MySQL Toolkit 工具集,其中的 pt-online-schema-change 就是用来进行线上的结构修改,不会阻塞读写 使用示例 pt-online-schema-change...test modify name varchar(60); 这个参数的值就是 “alter table test ”后面的部分 D=sakila,t=test 指定数据库和名 --execute...percona-toolkit/ centos7 安装示例 下载 rpm 版本 安装依赖包 yum install epel-release-7-5.noarch yum install perl-DBD-MySQL

2.9K60

给Excel工作建立目录

有时候我们会在一个工作簿中建立很多工作,怎样才能简单明了的管理工作呢,当然能建一个目录最好了,这里我们就学习一种给工作创建目录的方法。 1、在工作簿中新建一个工作,命名为“目录”。...A1",MID(目录,FIND("]",目录)+1,99)),"") 现在可以看到效果了,单击目录中的工作名称,就会自动跳转到相应工作。...注意:GET.WORKBOOK函数是宏函数,可以提取当前工作簿中的所有工作名,需要先定义名称后使用。...当单击函数 HYPERLINK 所在的单元格,Excel将打开链接的文件或跳转到指定的工作的单元格,本例中是跳转到目录&"!A1"。 IFERROR函数用于屏蔽错误。...注意:工作保存需要选择保存类型为“Excel 启用宏的工作簿(*.xlsm)”,同时需要在Excel选项中将宏安全性设置为中,否则会不能正常使用了。

1.5K40

MySQL关联查询,我们为什么建议小驱动大

建立了两张,一张员工,一张部门,员工中有部门id 这个属性,将这两张关联起来。...EXISTS 子查询其实在执行时,MySql 已经对它做了一些优化并不是对每条数据进行对比。 二、总结 在实际操作过程中我们要对两张的dept_id 都设置索引。...在一开始我们就讲了一个优化原则即:小驱动大,在我们使用IN 进行关联查询,通过上面IN 操作的执行顺序,我们是先查询部门再根据部门查出来的id 信息查询员工信息。...但是我们使用EXISTS 查询,首先查询员工,然后根据部门的查询条件返回的TRUE 或者 FALSE ,再决定员工中的信息是否需要保留。...当t_emp 中数据多于 t_dept 中的数据,这时我们使用IN 优于 EXISTS。

4.3K21

mysql DUPLICATE KEY UPDATE 问题

DUPLICATE KEY UPDATE batch执行时出死锁错误 背景知识 一、 mysql  insert 与 duplicate key: 典型的插入语句: 多条:INSERT INTO tablename...(1, 10), (2, 15) ON DUPLICATE KEY UPDATE data=data+VALUE(data) 二、innodb提高插入效率 查询使用的引擎:  show create...insert 语句马上执行,其实数据都被放在内存的队列中,并没有真正写入磁盘;这比每条语句分别插入要快的多;LOW_PRIORITY 刚好相反,在所有其他用户对表的读写完后才进行插入; 在项目中遇到的问题,...使用了这种insert处理,但是分库分,数据类型为innodb,  tablename各不相同,duplicate key只是用于合并update和insert语句。  ...貌似mysql有这个bug(http://bugs.mysql.com/bug.php?

3.2K50

mysqlmysql字符集设置为:utf8mb4,创建时候错误Specified key was too long; max key length is 767 bytes

错误提示是长度太长了:Specified key was too long; max key length is 767 bytes 来查看下创建的语句: CREATE TABLE `xxl_job_registry...如果系统变量innodb_large_prefix开启了,就会对使用dynamic或者是comperssed行格式的InnoD,索引键长度限制为3072个字节了。...如果没有开启这个,InnoDB会对,无论什么索引键长度限制都是767了。 解决方案有两种: 1:mysql系统变量innodb_large_prefix开启。...Mysql优化的时候: 在做 sql 优化时,对之前的添加个索引,却给出了 Specified key 'idx_t' was too long; max key length is 767 bytes... 提示,后来通过查询资料,发现: 由于 MySQL Innodb 引擎索引字段长度的限制为 767 字节,因此对于多字节字符集的大字段(或者多字段组合索引),创建索引会出现上面的错误。

1.5K20
领券