Phpmyadmin #1075-неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ
Привет, Я импортирую базу данных mySql (которая изначально была базой данных access) в phpmyadmin и дает мне эту ошибку:
SQL запрос:
CREATE TABLE `Acc_inst` (
`inst_ID` INTEGER NOT NULL AUTO_INCREMENT ,
`inst_Name` VARCHAR( 255 ) ,
`Inst_Ws` VARCHAR( 255 ) ,
`inst_ph` VARCHAR( 255 ) ,
`inst_Fx` VARCHAR( 255 ) ,
`Inst_E` VARCHAR( 255 )
) ENGINE = INNODB DEFAULT CHARSET = utf8;
MySQL сказал: документация
1075-неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ
-- на самом деле есть только столбец автоматического приращения, и он определен как первичный ключ, поэтому я не понимаю, почему это дает мне эту ошибку
3 ответов
определите столбец автоматического приращения как первичный ключ.
CREATE TABLE `Acc_inst`
(
`inst_ID` INTEGER NOT NULL AUTO_INCREMENT ,
`inst_Name` VARCHAR( 255 ) ,
`Inst_Ws` VARCHAR( 255 ) ,
`inst_ph` VARCHAR( 255 ) ,
`inst_Fx` VARCHAR( 255 ) ,
`Inst_E` VARCHAR( 255 ) ,
PRIMARY KEY `inst_ID`(`inst_ID`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
немного поздно, но я получаю ту же ошибку в последней версии phpMyAdmin и (4.4.2). Nimara использовал ручной SQL-запрос, я использовал специальную форму "добавить новую таблицу" и все равно получил эту ошибку.
Итак, для тех из вас, кто попал сюда так же, как я, ища ошибку #1075, вы должны знать, что это произойдет, если вы сначала установите столбец index / primary / autoincrement в форме, затем добавили несколько новых столбцов, а затем хотели отправить форму. Кажется, что когда вы добавляете больше столбцы, phpMyAdmin делает какое-то фоновое обновление и теряет "первичную" информацию. Вы все еще видите его в своей форме, но в фоновом режиме SQL-запрос, который он отправляет, больше не имеет этой информации.
таким образом, решением было бы отменить выбор основного столбца и установить его снова. Я уверен, что это ошибка, но она решает просто и быстро таким образом.
CREATE TABLE `Acc_inst`
(
`inst_ID` INTEGER NOT NULL primary key AUTO_INCREMENT ,
`inst_Name` VARCHAR( 255 ) ,
`Inst_Ws` VARCHAR( 255 ) ,
`inst_ph` VARCHAR( 255 ) ,
`inst_Fx` VARCHAR( 255 ) ,
`Inst_E` VARCHAR( 255 )
) ENGINE = INNODB DEFAULT CHARSET = utf8;
ошибка говорит, что вы должны определить столбец автоматического приращения как ключ: добавить primary key
к этому определению столбца.