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
有同样的错误。
这有点奇怪。名称末尾有空格(id
和 username
)。这似乎是导致问题的原因,即使一直使用转义名称(这在 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这样的数字
我在创建新的 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
有同样的错误。
这有点奇怪。名称末尾有空格(id
和 username
)。这似乎是导致问题的原因,即使一直使用转义名称(这在 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
.