[英]MySQL adding (num) to smallint column
当我在MySQL中创建一个将smallint指定为列的表,然后使用show create table甚至mysqldump时,MySQL在smallint定义之后添加了(5),如下所示。
我想就数据而言,这实际上并不重要,但是任何人都可以解释为什么以及是否/如何阻止它这样做?
顺便说一句,我试图更改现有的数据库表,使其与新的sql脚本的表完全匹配。 我总是可以更改新的sql脚本,但是如果可能的话,我希望更改现有的表(考虑软件安装与软件升级)。
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`status` varchar(100) NOT NULL DEFAULT '',
`port` smallint unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SHOW CREATE TABLE test;
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`status` varchar(100) NOT NULL DEFAULT '',
`port` smallint(5) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
不,您不能阻止SHOW CREATE TABLE
包含整数类型的display width属性。
如果整数类型的列声明中未包含显示宽度的值,则MySQL将为其提供默认值。 值5是SMALLINT UNSIGNED
的默认值。
显示宽度对可以存储或检索的值没有任何影响。 客户端应用程序可以利用该值来格式化结果集。
参考: http : //dev.mysql.com/doc/refman/5.6/en/numeric-type-attributes.html
tMySQL只是设置(显示)列的长度以匹配数据类型(最大值65535,五位数字)。 要更改此设置,您可以编写:
port
smallint(3)无符号NOT NULL缺省'0',
如果你喜欢。
尝试此操作开始在表中添加值。
<mysql> CREATE TABLE test(
-> ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(100) NOT NULL
-> );>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.