sql >> データベース >  >> RDS >> Mysql

MySQLで制約を追加する際に失敗する行を見つけます

    まず、このデータをインポートしようとしている場所にカテゴリテーブルが存在するかどうかを確認します。

    カテゴリテーブルが存在する場合は、このテーブルのすべてのcategory_idがidとしてカテゴリテーブルに存在する必要があることを確認する必要があります。

    最初のカテゴリテーブルをインポートしてから、このテーブルをインポートすることをお勧めします。

    一般的に、最初にすべての親テーブルのデータをインポートしてから、子テーブルをインポートする必要があります。

    汚い方法は以下のとおりですが、お勧めしません-

    set foreign_key_checks=0;
    import data here;
    set foreign_key_checks=1;
    

    どの行が問題を引き起こしているのかを知るだけです-

    以下のクエリは、問題のある行を提供します。

    SELECT a.category_id FROM Category_Term a 
      LEFT JOIN Category b ON a.category_id=b.id 
      WHERE b.id IS NULL;
    

    注:category_termのcategory_idとcategoryテーブルのidにインデックスが付けられると仮定します。



    1. Mysql2つの日時フィールドを比較します

    2. 列名として使用されている予約語をエスケープするにはどうすればよいですか? MySQL/テーブルの作成

    3. CでのSQLインジェクションの防止

    4. SQL Serverエラー110:INSERTステートメントには、VALUES句で指定された値よりも少ない列があります。