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

时间:2010-01-25 22:23:44

标签: mysql character-encoding default

在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;

用这个:

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

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

2 个答案:

答案 0 :(得分:26)

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

请参阅CREATE TABLE的MySQL文档。这是相关的一点:

table_option:
    ENGINE [=] engine_name
  ... other options ...
  | [DEFAULT] CHARACTER SET [=] charset_name
  ... more options ...

您可以使用SHOW CREATE TABLE命令确认这一点。

答案 1 :(得分:12)

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

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