【问题标题】:mysql why fields type of int have no length [duplicate]mysql为什么int的字段类型没有长度[重复]
【发布时间】:2020-08-28 06:25:04
【问题描述】:

我从服务器导出一个 mysql 架构并将其导入另一台服务器,但是当我检查表的架构时,我发现所有 int 类型的字段都没有长度。

但是当我尝试将其导入本地mysql时,一切正常。

有问题的模式:

mysql> desc user;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int unsigned | NO   | PRI | NULL    | auto_increment |
| key        | varchar(255) | YES  |     | NULL    |                |
| remark     | varchar(255) | YES  |     | NULL    |                |
| created_at | int          | YES  |     | NULL    |                |
| updated_at | int          | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

本地架构:

mysql> desc user;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| key        | varchar(255)     | YES  |     | NULL    |                |
| remark     | varchar(255)     | YES  |     | NULL    |                |
| created_at | int(11)          | YES  |     | NULL    |                |
| updated_at | int(11)          | YES  |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

服务器上的mysql是docker的mysql官方镜像:Server version: 8.0.21 MySQL Community Server - GPL

我的本​​地 mysql 是由 homebrew 安装的:Server version: 8.0.16 Homebrew

为什么会发生这种情况?以及如何解决?

【问题讨论】:

  • INT 数据类型的长度选项是假选项 - 所以它在最近的版本中被删除(解析但被忽略)。如果您只需要一个值在某个范围内,则根据 CHECK 约束使用。
  • 为什么不分享一些触发该问题的代码,以便其他人可以看到为什么会出错?

标签: mysql


【解决方案1】:

正如mysql手册在integer data type properties上所说:

从 MySQL 8.0.17 开始,ZEROFILL 属性已被数字数据类型弃用,整数数据类型的显示宽度属性也是如此。未来的 MySQL 版本将移除对 ZEROFILL 和整数数据类型的显示宽度的支持。

整数的长度属性并没有限制您可以存储在整数字段中的值,它仅用于显示目的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2017-05-14
    相关资源
    最近更新 更多