我是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
;
我无法在数据库中创建新表。
答案 0 :(得分:2)
列的定义末尾不允许使用空格,必须是:
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
有同样的错误。
答案 1 :(得分:1)
这有点奇怪。名称末尾有空格(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小提琴。
我也希望你打算这样做:
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`)
);
您的原始表定义创建了两个名为“PRIMARY KEY”和“UIQUE”的索引。它没有声明主键或唯一约束。
int
之后无需像45这样的数字。