1

次のステートメントALTER TABLE my_tbl ADD PRIMARY KEY (id );を使用して、主キーを既存の MySQL テーブルに追加しています。返信で、エラーが発生しています:

エラー 156 : テーブル 'db_name.my_tbl#1' は既に存在します。

チェックしたところ、テーブルに重複する id エントリがありません。次のようなことをするとDROP TABLE my_tbl#1、元のテーブル (my_tbl) が削除されます。Create Table my_tbl SELECT id, ... FROM tmp_tblmy_tbl が(ここで tmp_tbl は一時テーブルです)によって作成されたことに注意することはおそらく興味深いことです。

ここで何が起こっているのか誰にも分かりますか?

更新: ここには、ある種の孤立したテーブルの状況があるようです。以下の回答の提案を試しましたが、私の場合、問題は解決しませんでした。最終的に回避策を使用しました。別の名前 (例: my_tbl_new) のテーブルを作成し、情報をこのテーブルにコピーして、主キーを追加しました。次に、元のテーブルを削除し、新しいテーブルの名前を my_tbl に戻しました。

4

3 に答える 3

1

このようなことを試してください:-

ALTER TABLE my_tbl  DROP PRIMARY KEY, ADD PRIMARY KEY(id,id); 

またはこれを試してください:-

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE  CONSTRAINT_TYPE = 'PRIMARY KEY'
    AND TABLE_NAME = '[my_tbl]' 
    AND TABLE_SCHEMA ='dbo' )
BEGIN
    ALTER TABLE [dbo].[my_tbl] ADD CONSTRAINT [PK_ID] PRIMARY KEY CLUSTERED  ([ID])
END 

または、次のようにテーブルをフラッシュしてみてください:-

DROP TABLE IF EXISTS `my_tbl` ;
   FLUSH TABLES `my_tbl` ; 
   CREATE TABLE `my_tbl` ...
于 2013-08-25T12:51:50.473 に答える
0
DROP TABLE IF EXISTS `mytable` ;
FLUSH TABLES `mytable` ; 
CREATE TABLE `mytable` ...

また、許可の問題である可能性があります。

于 2013-08-25T13:04:09.437 に答える