1

そのため、一度に約 100 項目のデータを取得し、次のようなコマンドでそれらを MySQL データベースに挿入するスクリプトがあります。

INSERT IGNORE INTO beer(name, type, alcohol_by_volume, description, image_url) VALUES('Bourbon Barrel Porter', 2, '9.1', '', '')

スクリプトを 1 回実行したところ、DB に 100 個のエントリが追加されました。ただし、同じ SQL 構文を使用してスクリプトを再度実行し、すべての新しいデータ (つまり、重複なし) を収集しましたが、データベースは新しいエントリを反映していません。スクリプトの最初の繰り返しで挿入したのと同じ 100 エントリです。 .

クエリをログに記録したところ、クエリが新しいデータを使用してリクエストを行っていたことを確認できたので、スクリプトが新しいデータを収集しないことは問題ではありません。

名前フィールドは一意のフィールドですが、他のフィールドは一意ではありません。何か不足していますか?

4

1 に答える 1

0

IGNOREキーワードを使用すると、INSERTステートメントの実行中に発生したエラーが代わりに警告として扱われます。たとえば、IGNORE を指定しないと、テーブル内の既存のUNIQUEインデックスまたはPRIMARY KEY値を複製する行によって重複キー エラーが発生し、ステートメントが中止されます。ではIGNORE、行はまだ挿入されませんが、エラーは発行されません。

主キーがない場合、無視する重複キーはありません。常に主キーを設定する必要があるため、それを行ってください。重複してはならない追加の列が必要な場合は、それらを " unique" として設定します。

于 2013-05-06T04:18:23.103 に答える