SQL 错误 (1166):列名称不正确 'id'

SQL Error(1166) : Incorrect column name 'id'

我在创建新的 yii 和 heidiSQL 时是新手 table 我遇到了这个错误,所以请帮我解决这个错误

CREATE TABLE `users` (
    `id ` INT(45) NULL,
    `username ` VARCHAR(50) NULL,
    `pwd_hash` VARCHAR(50) NULL,
    `fname` VARCHAR(50) NULL,
    `lname` VARCHAR(50) NULL,
    `email` VARCHAR(50) NULL,
    `country` VARCHAR(50) NULL,
    `address` VARCHAR(50) NULL,
    `gender` VARCHAR(50) NULL,
    INDEX `PRIMARY KEY` (`id `),
    INDEX `UIQUE KEY` (`username `)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;

我无法在数据库中创建新的 table。

列定义末尾不允许有空格,必须是:

CREATE TABLE `users` (
    `id` INT(45) NULL,
    `username` VARCHAR(50) NULL,
    `pwd_hash` VARCHAR(50) NULL,
    `fname` VARCHAR(50) NULL,
    `lname` VARCHAR(50) NULL,
    `email` VARCHAR(50) NULL,
    `country` VARCHAR(50) NULL,
    `address` VARCHAR(50) NULL,
    `gender` VARCHAR(50) NULL,
    INDEX `PRIMARY KEY` (`id`),
    INDEX `UNIQUE KEY` (`username`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB

您对 username 有同样的错误。

这有点奇怪。名称末尾有空格(idusername)。这似乎是导致问题的原因,即使一直使用转义名称(这在 MySQL documentation 中有记录)。这有效:

CREATE TABLE `users` (
    `id` INT(45) NULL,
    `username` VARCHAR(50) NULL,
    `pwd_hash` VARCHAR(50) NULL,
    `fname` VARCHAR(50) NULL,
    `lname` VARCHAR(50) NULL,
    `email` VARCHAR(50) NULL,
    `country` VARCHAR(50) NULL,
    `address` VARCHAR(50) NULL,
    `gender` VARCHAR(50) NULL,
    INDEX `PRIMARY KEY` (`id`),
    INDEX `UIQUE KEY` (`username`)
);

我希望转义字符能够工作。但是,名称末尾的空格是个坏主意,因此请将其删除。 Here 是 SQL Fiddle.

我也希望你有这个打算:

CREATE TABLE `users` (
    `id` INT NOT NULL,
    `username` VARCHAR(50) NULL,
    `pwd_hash` VARCHAR(50) NULL,
    `fname` VARCHAR(50) NULL,
    `lname` VARCHAR(50) NULL,
    `email` VARCHAR(50) NULL,
    `country` VARCHAR(50) NULL,
    `address` VARCHAR(50) NULL,
    `gender` VARCHAR(50) NULL,
    PRIMARY KEY (`id`),
    UNIQUE (`username`)
);

您最初的 table 定义创建了两个名为 "PRIMARY KEY" 和 "UIQUE" 的索引。它没有声明主键或唯一约束。

int.

后面不需要45这样的数字