gpt4 book ai didi

MySQL 添加 (num) 到 smallint 列

转载 作者:行者123 更新时间:2023-11-29 06:27:55 25 4
gpt4 key购买 nike

当我在 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 包含整数类型的显示宽度属性。

如果显示宽度的值未包含在整数类型的列声明中,MySQL 会为其提供一个默认值。 5 的值是 SMALLINT UNSIGNED 的默认值。

显示宽度对可以存储或检索的值没有任何影响。客户端应用程序可以使用该值来格式化结果集。

引用:http://dev.mysql.com/doc/refman/5.6/en/numeric-type-attributes.html

关于MySQL 添加 (num) 到 smallint 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29812723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com