【发布时间】: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