プロが教える店舗&オフィスのセキュリティ対策術

テーブルで、id,useid,date,extext という項目があり、idにプライマリーキー、userid、dateにインデックスとユニークキーを設定しています。
自宅のパソコンでやると、問題なくデータが追加できるのですが、今使っているパソコンからだと
ユニークキーを設定すると、重複データが追加できなくなりました。

データのサンプル は id=1,userid=1,date=2014-1-1,extext="aaaaa"(一つ目は追加できます。)
id=2,userid=1,date=2014-1-2,extext="bbbbb"(#1062 - Duplicate entry '1' for key 'userid_2'というエラーがでます。)

質問者からの補足コメント

  • テーブルに何か残っているのかと思い、テーブルを作り直しました。しかし、同じエラーメッセージがでます。同じdateのものを追加しようとすると、(#1062 - Duplicate entry '1' for key 'date_2')
    というメッセージがでます。残っているかもしれないものを確かめるにはどうしたらいいでしょうか?

      補足日時:2016/02/22 12:51
  • userid_2とdate_2というインデックスが残っていました。
    こういうsql文があるのですね。
    こういうsql文を覚えるのは何を勉強すればよいでしょうか。
    それと、この2つのデータを消去するsql文を教えてください。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/02/22 13:30

A 回答 (3件)

>userid_2とdate_2というインデックスが残っていました。




ALTER TABLE `extra` DROP INDEX `userid_2` ;
ALTER TABLE `extra` DROP INDEX `date_2` ;

ですね

>こういうsql文を覚えるのは何を勉強すればよいでしょうか。

細かい構文を覚える必要はなくて適当なキーワードでぐぐれば引っかかりますよ
基本的にテーブルの属性を見るのは「SHOW」構文で変更するのは「ALTER TABLE」構文です
    • good
    • 0

>Duplicate entry '1' for key 'date_2'



エラーをそのまま解釈すればdate_2というインデックス(unique)にひっかかっていますよね?

phpMyAdminつかっているのでしたら、(phpMyAdminの)バージョンにもよりますが
該当するテーブルを選んで構造をみると、インデックスが確認できます。

SQL文で確認するなら
SHOW INDEX FROM extra;
同じKey_nameで表示されるのは複合インデックスです
この回答への補足あり
    • good
    • 0

userid_2という複合インデックス(unique)に引っかかっていますね。


なにか以前につけてものが残っているのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!