我在用于Linux(x86_64)的mysql Ver 15.1 Distrib 5.5.60-MariaDB中进行了测试
如果我创建下表:
CREATE TABLE `some_table`(
-- No matter what number I put in `int(n)`; the result is the same
`id` int(1) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
`name` varchar(40) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我这样做:
-- ID = 5 billion
INSERT INTO `some_table` VALUES('5000000000','the_name_is_irrelevant');
它插入OK,但回退到INTEGER UNSIGNED
类型的固有限制(4个字节)。创建表时,无论我在int(n)
关键字中输入多少数字;结果是一样的:
+------------+--------------------------+
| id | name |
+------------+--------------------------+
| 4294967295 | 'the_name_is_irrelevant' |
+------------+--------------------------+
在声明int
字段时,MariaDB似乎忽略了数字参数。
怎么可能?这是仅在MariaDB
中发生还是在mysql
中发生?我应该知道那个数字参数是什么,它的原始目的是什么(如果有的话)?