为什么MariaDb似乎会忽略`int(n)`中的参数?

时间:2019-03-13 14:22:11

标签: mysql mariadb

情况:

我在用于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中发生?我应该知道那个数字参数是什么,它的原始目的是什么(如果有的话)?

0 个答案:

没有答案