mysql字符集的优先级是多少?

What is the priority of mysql character set?

可以查看show create table 'table', show create database 'database', \s with db, table, system.[=12]的字符集=]

下面的情况table使用的是什么字符集?

如果客户端是utf8mb4,table是utf8mb4,那么用utf8mb4是没有问题的。 我可以忽略所有其他设置吗?

1.
mysql > show create database db_name;
+-----------+----------------------------------------------------------------------+
| Database  | Create Database                                                      |
+-----------+----------------------------------------------------------------------+
| db_name   | CREATE DATABASE `db_name` /*!40100 DEFAULT CHARACTER SET latin1 */   |
+-----------+----------------------------------------------------------------------+

2.
mysql > show create table tb_name;
CREATE TABLE `tb_name` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `var` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

3.
\s
Server characterset:    utf8
Db     characterset:    latin1
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4

每一列都有自己的字符集和排序规则; table、数据库和服务器字符集只是新创建的新列、table 和数据库(分别)的默认值。但是 show create table 将显示与 table 默认值不同的任何列的字符集,因此如果您没有看到任何字符集,则 table 的字符集就是其列正在使用的字符集.