尝试在我的数据库中创建此表时,出现错误:
#1064 - 您的SQL语法出错;检查手册 对应于您的MySQL服务器 用于正确语法的版本 'unsigned NOT NULL default'0'附近, PRIMARY KEY(reminder_id),KEY reminder_id(第5行的rem'
CREATE TABLE reminder_events (
reminder_id bigint(20) unsigned NOT NULL auto_increment,
reminder_name varchar(255) NOT NULL default '',
reminder_desc text,
reminder_date varchar(8) unsigned NOT NULL default '0',
PRIMARY KEY (reminder_id),
KEY reminder_id (reminder_id)
) TYPE=MyISAM;
谁能看到我做错了什么?
答案 0 :(得分:2)
问题在于您尝试将文本字段(varchar)定义为无符号,这只能应用于数字字段。
即:“reminder_date varchar(8) unsigned NOT NULL default '0',
”毫无意义。
但是,由于该字段被称为“reminder_date”,我猜你正试图存储一个日期,在这种情况下你真的想要使用MySQL的DATE字段类型。
例如:“reminder_date DATE NOT NULL,
”
此外,如果您想要搜索任何这些字段,还应添加一些索引以加快搜索速度。因此,如果您希望能够搜索姓名和日期,可以使用:
CREATE TABLE reminder_events (
reminder_id bigint(20) unsigned NOT NULL auto_increment,
reminder_name varchar(255) NOT NULL DEFAULT '',
reminder_desc text,
reminder_date DATE NOT NULL,
PRIMARY KEY (reminder_id),
KEY reminder_id (reminder_id),
KEY reminder_name (reminder_name),
KEY reminder_date (reminder_date)
) TYPE=MyISAM;
答案 1 :(得分:2)
只需删除未签名。
CREATE TABLE reminder_events (
reminder_id bigint(20) unsigned NOT NULL auto_increment,
reminder_name varchar(255) NOT NULL default '',
reminder_desc text,
reminder_date varchar(8) NOT NULL default '0',
PRIMARY KEY (reminder_id),
KEY reminder_id (reminder_id)
) TYPE=MyISAM;
答案 2 :(得分:0)
撰写ENGINE
代替TYPE
CREATE TABLE reminder_events (
reminder_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
reminder_name VARCHAR(255) NOT NULL DEFAULT '',
reminder_desc TEXT,
reminder_date VARCHAR(8) NOT NULL DEFAULT '0',
PRIMARY KEY (reminder_id),
KEY reminder_id (reminder_id)
) ENGINE=MYISAM;