使用显式默认字符集创建mysql表,如果不这样做,该怎么办?

Dan*_*nDC 22 mysql default character-encoding

在mysql 5.x中,如果我做这样的事情会有什么区别:

CREATE TABLE aTable (
    id                       BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    aNumber          bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
Run Code Online (Sandbox Code Playgroud)

有了这个:

CREATE TABLE aTable (
   id                       BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   aNumber            bigint(20) DEFAULT NULL
) ENGINE=InnoDB CHARACTER SET=utf8;
Run Code Online (Sandbox Code Playgroud)

注意我没有在第一个中将字符集指定为默认值.我在mysql文档中找不到任何东西.

mar*_*ton 27

这个词DEFAULT在那里是可选的 - 所以这两个是等价的,即它们设置了表的默认字符集.

有关CREATE TABLE的信息,请参阅MySQL文档.这是相关的一点:

table_option:
    ENGINE [=] engine_name
  ... other options ...
  | [DEFAULT] CHARACTER SET [=] charset_name
  ... more options ...
Run Code Online (Sandbox Code Playgroud)

您可以使用SHOW CREATE TABLE命令进行确认.


cod*_*gar 13

MySQL中有4个级别的默认设置:服务器,数据库,表和列.使用较低级别的默认值,您可以覆盖较高的默认值.

如果更改将默认字符集设置为数据库设置以外的其他字符的表,则表默认值将覆盖db default.