我使用以下代码在MySQL上创建了一个表:
CREATE TABLE IF NOT EXISTS auth (
id INT AUTO_INCREMENT,
email VARCHAR(50) UNIQUE NOT NULL PRIMERY KEY,
password VARCHAR(250) NOT NULL,
username VARCHAR(50) UNIQUE,
admin BOOLEAN NOT NULL DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
但我得到了这个错误:
ERROR 1064 (42000): 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 'PRIMERY KEY,
password VARCHAR(250) NOT NULL,
username VARCHAR(50) UNIQUE,
出了什么问题?EDIT
:这个问题是由于PRIMARY KEY
中的一个错别字,但是在修复这个问题之后,我遇到了另一个错误:
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
2条答案
按热度按时间hs1ihplo1#
初级的错别字是初级的明显拼写错误。这是你本应该自己能回答的问题。
第二个问题是自动增量列必须是键的第一列,大多数人说它必须是主键,但从技术上讲它可以是表的任何键。
以下表定义有效:
将
UNIQUE
添加到id
列使其成为键,这满足了自动增量列是键的第一列的要求。我删除了
email
列中的UNIQUE NOT NULL
关键字,因为PRIMARY KEY
暗示了这一点,这是多余的,不幸的是,如果您同时包含这两个关键字,MySQL将为email
创建一个额外的不必要的唯一索引。fcy6dtqo2#
如果我没记错的话,您输入了主键,因此它应该是主键
编辑:您遇到的问题是因为您在不同的列上具有auto_increment和主键。您可以在1列上同时使用这两个参数,但不能在2列上同时使用,因为每个表只能有1个自动增量。新脚本: