现象
上线时sql报错,表链接时collation不一致导致无法保存。
结论
先上结论:线上创建数据库表时,可以不指定chaset和collation,则使用数据库默认的chaset和collation,目前线上默认是utf8mb4和utf8mb4_unicode_ci;
或者同时指定charset和collation。
原因分析
1.查看官方文档:

2.查看线上数据库的创建语句,线上数据库默认使用的charset是utf8mb4,排序方式是utf8mb4_unicode_ci

3.查看utf8的默认collation,可以看到如果指定了charset而没有制动clooation,会使用默认的utf8mb4_general_ci作为排序方式而不会使用数据库的默认排序方式。
SHOW CHARACTER SET LIKE 'utf8%';
网友评论