MySQL phpMyadmin - 错误 #1064

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4679080/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 18:17:54  来源:igfitidea点击:

phpMyadmin - Error #1064

mysqlphpmyadminmysql-error-1064

提问by En-Motion

When trying to create this table in my db, I get an error:

尝试在我的数据库中创建此表时,出现错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'unsigned NOT NULL default '0', PRIMARY KEY (reminder_id), KEY reminder_id (rem' at line 5

#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以在第 5 行使用近 'unsigned NOT NULL default '0', PRIMARY KEY (reminder_id), KEY remember_id (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;

Can anyone see what I'm doing wrong?

谁能看到我做错了什么?

采纳答案by John Parker

The problem is that you're trying to define a text field (varchar) as being unsigned, which is something that can only apply to a numerical field.

问题是您试图将文本字段 (varchar) 定义为无符号字段,这只能应用于数字字段。

i.e.: "reminder_date varchar(8) unsigned NOT NULL default '0'," makes no sense.

即:“ reminder_date varchar(8) unsigned NOT NULL default '0',”没有意义。

However, as the field is called "reminder_date", I'm guessing you're attempting to store a date, in which case you reallywant to use MySQLs DATE field type.

但是,由于该字段称为“reminder_date”,我猜您正在尝试存储日期,在这种情况下,您确实想使用 MySQL 的 DATE 字段类型。

e.g.: "reminder_date DATE NOT NULL,"

例如:“ reminder_date DATE NOT NULL,

Additionally, if you're going to want to search on any of these fields, you should also add some indexes to speed up the searches. So, if you wanted to be able to search on the name and date, you could use:

此外,如果您要搜索这些字段中的任何一个,您还应该添加一些索引以加快搜索速度。因此,如果您希望能够搜索姓名和日期,可以使用:

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;

回答by UltraInstinct

Just remove unsigned.

只需删除未签名。

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;

回答by Shailesh

Write ENGINEinstead of TYPE

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;