SQL 错误 (1166): 列名“id”不正确


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

我是 yii 和 heidiSQL 的新手,同时正在创建新表,我收到此错误,所以请帮助我解决此错误

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
;

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

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

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文档中有记录)。 这有效:

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`)
);

我希望逃脱的角色能够正常工作。 但是,名称末尾的空格是一个坏主意,因此请将其删除。 这是一个SQL小提琴。

我也希望你打算这样做:

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`)
);

原始表定义创建了两个索引,分别称为"主键"和"UIQUE"。 它没有声明主键或唯一约束。

没有必要在 45 之后有像 int 这样的数字.