在MySQL 5.1.73上,我创建了一个带有Enum列的表,如下所示:
create table IF NOT EXISTS rollover_profile
(
rollover_profile_id BIGINT(20) PRIMARY KEY NOT NULL AUTO_INCREMENT,
max_period INT(10) NOT NULL,
percentage INT(10) NOT NULL,
type VARCHAR(10) NOT NULL,
description VARCHAR(1024) NOT NULL,
logical_delete_yn ENUM('Y','N') NOT NULL DEFAULT 'N',
published_yn ENUM('Y','N') NOT NULL DEFAULT 'N'
);
但是当我检查表格logical_delete_yn
时,published_yn
被定义为ENUM('','')
我尝试了另一台MySQL服务器(版本5.0.77),似乎没问题。
是否有一些MySQL选项错误?
答案 0 :(得分:0)
原来,新服务器上的字符集已更改为UCS2。将其更改为UTF8解决了这个问题。
奇怪的是将查询更改为
create table IF NOT EXISTS rollover_profile
(
rollover_profile_id BIGINT(20) PRIMARY KEY NOT NULL AUTO_INCREMENT,
max_period INT(10) NOT NULL,
percentage INT(10) NOT NULL,
type VARCHAR(10) NOT NULL,
description VARCHAR(1024) NOT NULL,
logical_delete_yn ENUM('Y','N') NOT NULL DEFAULT 'N',
published_yn ENUM('Y','N') NOT NULL DEFAULT 'N'
);
或两个ENUM不具备相同值的任何内容在UCS2上都能正常工作。