こんにちは、mySqlデータベース(元はアクセスデータベースでした)を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-不正なテーブル定義。自動列は1つしか存在できず、キーとして定義する必要があります
-実際には自動インクリメント列のみにあり、主キーとして定義されているため、なぜこのエラーが発生するのかわかりません
自動インクリメント列を主キーとして定義します。
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エラーを検索した人は、最初にフォームにインデックス/プライマリ/自動インクリメント列を設定し、新しい列をいくつか追加して、フォームを送信します。さらにカラムを追加すると、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;
エラーは、自動インクリメント列をキーとして定義する必要があることを示しています:Add primary key
をこの列定義に追加します。