2016-02-25 6 views
-2

Я новичок в YII и HeidiSQL в то время как я создаю новую таблицу я получаю эту ошибку, так что помочь мне решить эту ошибкуSQL Error (1166): Неверное имя столбца «Идентификатор»

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.

+0

«Пробелы не разрешены в определении столбцов»: это немного вводит в заблуждение, пробелы допускаются в определениях столбцов (хотя они и не рекомендуются). Пробелы не допускаются в конце имени столбца, хотя источник: http://dev.mysql.com/doc/refman/5.7/en/identifiers.html – Sevle

+1

Отмечено, @Sevle и обновлено. – mitkosoft

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». Он не объявлял первичный ключ или уникальное ограничение.

Нет необходимости иметь число, подобное 45 после int.

+0

с ошибкой 'UNIQUE' в запросе firsr –

+1

@PathikVejani. , , Это не имеет никакого значения, потому что это имя индекса, а не объявление уникальности. –

+0

«Имена базы данных, таблицы и столбца не могут заканчиваться символами пробела». источник: http://dev.mysql.com/doc/refman/5.7/en/identifiers.html – Sevle