天天看点

MySQL - int unsigned

结论:

  1. 默认的 int 类型,取值范围是-2147483648-2147483647之间,而 unsigned 的取值范围是0-4294967295之间。
  2. 默认的 int 类型,允许插入负数,unsigned 设置后,无法插入负数。

AUTO_INCREMENT

CREATE TABLE `test01` (
    id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `name` varchar(60) DEFAULT ''
 ) ENGINE=InnoDB AUTO_INCREMENT=2147483647 DEFAULT CHARSET=utf8mb4 COMMENT='test01';

INSERT INTO test01(name) VALUES ('test 001');      

成功插入数据后,如下图所示。AUTO_INCREMENT 的值为初始值。

MySQL - int unsigned
select last_insert_id();      
MySQL - int unsigned

此时id的值为2147483648。

INSERT INTO test01(name) VALUES ('test 002');      

如果以上语句执行成功,则id的值就变为2147483649。但是实际会报错。

MySQL - int unsigned

因为id不能再增加了,出现id重复。

int

主键作为id可以为负,请参​

ID 自增越界时的解决方案

方案1) 将int修改为int(11) unsigned

ALTER TABLE test01 MODIFY COLUMN `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT;      

继续阅读