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 к этому определению столбца.