MySQL 8.0发行说明
MySQL 8.0源代码文档10bet官方网站
Statement-based复制AUTO_INCREMENT
,LAST_INSERT_ID ()
,时间戳
值进行受以下异常:
声明中调用触发器或导致一个更新一个函数
AUTO_INCREMENT
列不是复制正确使用statement-based复制。这些语句被标记为不安全。(错误# 45677)一个
插入
成一个表,包含一个复合主键AUTO_INCREMENT
列那不是第一列的组合键不安全的statement-based日志或复制。这些语句被标记为不安全。(错误# 11754117,错误# 45670)这个问题不影响表使用
InnoDB
存储引擎,因为一个InnoDB
表与一个AUTO_INCREMENT列至少需要一个键,自动递增列是唯一或最左边的列。添加一个
AUTO_INCREMENT
列一个表ALTER TABLE
可能不会产生相同的命令行复制和来源。这是因为行编号的顺序取决于特定的存储引擎使用的表和顺序插入的行。如果有相同的顺序是很重要的来源和复制品,行之前必须命令分配一个AUTO_INCREMENT
号码。假设你想添加一个AUTO_INCREMENT
列一个表t1
这列col1
和col2
生成一个新表,下面的语句t2
相同的t1
但有一个AUTO_INCREMENT
专栏:创建表t2和t1;ALTER TABLE t2添加id INT AUTO_INCREMENT主键;插入t2 SELECT * FROM t1 col1秩序,col2;
重要的保证相同的排序源和副本,
命令
条款必须名字所有列t1
。指令给出的局限性
创建表……就像
:外键的定义被忽略,数据目录
和索引目录
表选择。如果一个表定义包括任何这些特征,创造t2
使用一个创建表
声明,用于创建一个是相同的t1
,但附加的AUTO_INCREMENT
列。不管方法用于创建和填充的副本
AUTO_INCREMENT
列,最后一步是把原始表然后重命名复制:t1下降;ALTER TABLE t1 t2重命名;