尝试通过终端在 MySQL 中创建 table 时出错

Error trying to create table in MySQL via terminal

我正在尝试通过终端在我的数据库中创建 table。

这是我的语法:

CREATE TABLE `users` (
   PRIMARY KEY(id) NOT NULL AUTO_INCREMENT,
   `last_name` VARCHAR NOT NULL,
   `first_name` VARCHAR NOT NULL,
   `gender`  VARCHAR NOT NULL,
   `fav_color`  VARCHAR NOT NULL,
   `birthdate`  DATE NOT NULL
);

我收到这个错误:

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 'NOT NULL AUTO_INCREMENT,
`last_name` VARCHAR NOT NULL,
`first_name` VARCHA' at line 2

我哪里错了?

您创建语句的语法错误:

正确的是:

CREATE TABLE `users` (
   `id` int NOT NULL AUTO_INCREMENT,
   `last_name` VARCHAR(255) NOT NULL,
   `first_name` VARCHAR(255) NOT NULL,
   `gender`  VARCHAR(255) NOT NULL,
   `fav_color`  VARCHAR(255) NOT NULL,
   `birthdate`  DATE NOT NULL,
   PRIMARY KEY(`id`)
);

有关详细信息,请参阅 offical documentation

应该是

id int primary key auto_increment not null

您试图在不存在的字段上定义主键。键不能是 "not null" 绝对不能是 "auto_increment".

除了 Jens 和 Marc 指出的问题之外,您必须声明 Varchar 字段的长度才能使此语句生效,如下所示:

CREATE TABLE `test`.`users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `last_name` VARCHAR(45) NOT NULL,
  `first_name` VARCHAR(45) NOT NULL,
  `gender` VARCHAR(45) NOT NULL,
  `fav_color` VARCHAR(45) NOT NULL,
  `birthdate` DATE NOT NULL,
  PRIMARY KEY (`id`));