2017-02-07 40 views
0

私はsqlite3を使い始めたので、今度はmysqlに切り替える必要があります。私sqlite3のためのテーブルコード構造を作成することは、私はそれがdb.tableにDATA_FRAMEから追加していPythonスクリプトを使用していますmysql ON CONFLICT IGNORE

CREATE TABLE IF NOT EXISTS players(
      "Name" TEXT, 
      "B/T" TEXT, 
      "Ht" TEXT, 
      "Wt" TEXT, 
      "DOB" TEXT,   
      UNIQUE (Name, DOB) ON CONFLICT IGNORE); 

です。 UNIQUE、ON CONFLICT IGNOREは重複を追加しないために必要な方法で動作します。私の問題は、私はそれがmysqlで動作するように見えることはできません。私はmysqlのその1行からどのように同じ結果を得ることができるかについてのアイデアを探しています。私の現在のMySQLのエラーは、エラー:

CREATE TABLE IF NOT EXISTS players(    
      Name VARCHAR(30), 
      `B/T` VARCHAR(5), 
      Ht VARCHAR(5), 
      Wt VARCHAR(5), 
      DOB VARCHAR(11), 
      UNIQUE (Name, DOB) ON CONFLICT IGNORE); 

大変ありがとうございました!

+1

AFAIK MySQLにはこのようなものはありません。しかし、INSERT文を 'INSERT IGNORE ..'に書き換えることができます。重複した挿入は無視されます。 –

答えて

1

MySQLでは、重複をどのように処理するかはクエリの裁量に委ねられています。これを処理するには、INSERT IGNORE ...が好ましい方法です。

NULL=NULLがfalseであるため、UNIQUEのインデックスがNULLの値でトリガーしないことに注意してください。

+0

情報ありがとう! –

+1

技術的には、もちろん、理由は「null = null」は真ではないということです。それは偽でもない。それはまだヌルです。 –