PDF (US Ltr) - 24.6Kb
PDF (A4) - 23.3Kb
2016 年 9 月
之前的版本使用混合大小写的表名。由于 MySQL Shell 区分大小写,因此表名已更改为小写。
2019 年 12 月
该 world.sql
文件已更改以解决几个问题
-
该
world
数据库使用latin1
,但 MySQL 从 8.0 开始使用默认字符集utf8mb4
。将数据库转换为使用utf8mb4
使其与 MySQL 8.0 保持一致,同时保持与旧版本系列的兼容性。数据库转换为
utf8mb4
的方式如下USE world; -- turn off foreign key checking; otherwise, the ALTER TABLE -- statements fail with incompatible foreign key errors. SET SESSION foreign_key_checks=0; -- convert database and tables to utf8mb4 ALTER DATABASE world CHARACTER SET utf8mb4; ALTER TABLE city CONVERT TO CHARACTER SET utf8mb4; ALTER TABLE country CONVERT TO CHARACTER SET utf8mb4; ALTER TABLE countrylanguage CONVERT TO CHARACTER SET utf8mb4; -- re-enable foreign key checking SET SESSION foreign_key_checks=0;
-
MySQL Shell 要求 X 协议连接的字符集为
utf8mb4
。使用此类连接加载latin1
编码的world.sql
文件会产生错误。使用 mysqldump 以及
--default-character-set=utf8mb4
选项设置字符集,并使用--set-charset
使转储包含SET NAMES
以用于该字符集,这将写入一个utf8mb4
编码的转储文件。将world.sql
的编码更改为utf8mb4
允许它在 MySQL Shell 中使用 X 协议连接加载而不会出现错误。 -
MySQL 8.0.17 已弃用以下功能
浮点列定义中的位数;例如,
FLOAT(10,2)
。整数列定义中的显示宽度;例如,
INT(10)
。
该
world.sql
文件同时使用这两种功能,导致在 MySQL 8.0.17 及更高版本中加载时出现警告。要避免
FLOAT
列中的位数,需要手动更改相关列。这是通过将FLOAT(
更改为M
,D
)DECIMAL(
来完成的M
,D
)USE world; ALTER TABLE country MODIFY SurfaceArea DECIMAL(10,2) NOT NULL DEFAULT '0.00', MODIFY LifeExpectancy DECIMAL(3,1) DEFAULT NULL, MODIFY GNP DECIMAL(10,2) DEFAULT NULL, MODIFY GNPOld DECIMAL(10,2) DEFAULT NULL; ALTER TABLE countrylanguage MODIFY Percentage DECIMAL(4,1) NOT NULL DEFAULT '0.0';
要生成转储文件中没有显示宽度的整数列定义,只需使用来自 MySQL 8.0.19 或更高版本的 mysqldump 即可。