egmkang 服务端开发工程师

mysql中使用auto_increment需要注意

2014-07-09

不能不说MySQL真恶心啊. 我这边创建一张表, 带有自增字段unique_id, SQL如下:

CREATE TABLE table_name(
    `unique_id` BIGINT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(unique_id)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;

MySQL里面比较操蛋的事情是, auto_increment的种子值是存在内存里面的, 服务器如果重启, 种子值就会被设置成该表记录的最大值, 如果没有记录, 就变成1了. 如果你的逻辑不依赖种子值, 那就没有任何问题; 但是我的逻辑偏偏却依赖这个值, 然后就掉到坑里面去了,艹艹艹

所以, 创建完表之后, 得向里面添加一行无效值, 防止种子值回退.


下一篇 format

Comments