2012-02-16 11 views
0

入力されているが「重複エントリー」について不平を言います。テーブルの作成自体は主キーを定義しません。あなたは、この表にデータをロードするためにこれを実行すると、今MySQLは独自のデータは、私はmysqlデータベースにこのテーブルを持っている

<addPrimaryKey tableName="wifi_network_config_auth_algorithm" 
     columnNames="wifi_network_config_id,auth_algorithm" 
     constraintName="pk_wifi_network_config_auth_algorithm"/> 

:表の作成に続いて、次LiquiBaseをコマンドは、主キーとして2列の組み合わせを設定するために使用され

LOCK TABLES `wifi_network_config_auth_algorithm` WRITE; 
INSERT INTO `wifi_network_config_auth_algorithm` VALUES 
(1, 'OPEN'), 
(1, 'SHARED'), 
(2, 'SHARED'), 
(2, 'LEAP'); 
UNLOCK TABLES; 

ます取得:

ERROR 1062 (23000): Duplicate entry '1' for key 2 

両方の列の組み合わせが主キーであるので、2つの列のデータの組み合わせはユニークでなければなりませんので - データ笙のために真であります上記のwn。なぜMySQLは不平を言っていますか?

また、値が「1」意味を成さない、2をキーに割り当てられていることを訴えています。私はINSERTを次のように変更しました:

INSERT INTO `wifi_network_config_auth_algorithm` (`wifi_network_config_id`, `auth_algorithm`) 

しかし、それはmysqlから同じ苦情がありませんでした。

おかげで、これは私の作品 ハリ

+3

あなたは「SHOWは、表w​​ifi_network_config_auth_algorithmをCREATE」を実行することにより、期待通りにテーブルを作成し確認することができますか? – kbenson

+0

このコマンドをお寄せいただきありがとうございます。それは原因を示した。テーブルを作成した後、私はwifi_network_config_idでインデックスを作成していて、それが一意であると言いました。 –

+0

uniqe = falseに設定した後、正常に動作します。"wifi_network_config_id" int(11)NOT NULLのデフォルト '0'、 'auth_algorithm' varchar(50)NOT NULLのデフォルト ''、 PRIMARY KEY(' wifi_network_config_id'、 'auth_algorithm')、 UNIQUE KEY' index_wifi_network_config_id'( 'wifi_network_config_id')、FOREIGN KEY fk_wifi_network_config_auth_algorithm_wifi_network_config_id' CONSTRAINT'( 'wifi_network_config_id')REFERENCES' wifi_network_config'( 'id') –

答えて

1

は、@ kbensonの助けを借りて問題を考え出しました。その答えは元の質問に対するコメントです。

1

。 insert文を実行する前に、テーブルが空であるか、これらの値がありませんか?

私は二回、この例を実行すると、私はエラーメッセージを取得します:最初のDELETE FROM wifi_network_config_auth_algorithmを呼び出す

キー 'PRIMARY' の重複したエントリ '1-OPEN'

はそれを避けることができます。

それ以外の場合は、エラーメッセージが異なるため、主キーの作成方法に問題があるはずです。

私は、以下のものを使用してテストテーブルを作成:

CREATE TABLE `test` (
      `wifi` int(11) NOT NULL, 
      `auth` varchar(50) NOT NULL, 
      PRIMARY KEY (`wifi`,`auth`) 
     ) ENGINE=InnoDB DEFAULT CHARSET=latin1   
+0

おかげで「UPDATE CASCADE ON DELETE CASCADE ON –

+0

あなたはコメントではなくあなたの質問への回答として機能したものを投稿し、それを正しい答えとして選択すると役立ちます将来の同じ訪問者または訪問者同様の問題。 – JYelton

関連する問題