MySQL导数据笔记

2019-12-16 9:08:43 星期一

MySQL 5.6 limit / order 有bug

如果主键不是自增的, 只能全表导出导入, 分批导出再导入的话会报主键重复

 

触发器:

批量导入数据时, 要关闭触发器 (5.6版本不会为每条数据执行一次触发器, 而是很多条记录执行一次触发器)

SELECT * FROM information_schema.`TRIGGERS`;
show create trigger 触发器名;
drop trigger 触发器名;

 

外键 (导数据表时会检测外键依赖): 

禁用外键约束.: SET FOREIGN_KEY_CHECKS=0;

启动外键约束: SET FOREIGN_KEY_CHECKS=1;

 

数据包限制(导数据时, MySQL限制插入和导出的数据量, 如果设置的太小就会报 mysql has gone away):

show global variables like 'max_allowed_packet';

set global max_allowed_packet = 2* 1024 * 1024 * 1024

如果设置不成功, 而且数据量不是特别大的话, 可以一次性把数据都读出来, 然后用类似PHP的array_splice()方法分批查入到新的表中

 

修改表结构:

在数据量大的表中修改表结构, 不要加 after cloumnxxx;

 

insert 返回值:

当表的主键字段不是自增的时候,添加一条数据返回的最后插入字段的id的值就是0,但并不表示其插入错误或没有插入成功

 

 字符集

alter table xxxdefault charset=utf8;

alter database xxx character set utf8 COLLATE utf8_general_ci;

show variables like '%char%';

 

posted @ 2019-12-16 09:15  myD  阅读(171)  评论(0编辑  收藏  举报