SHOW INDEX FROM user; / 原因判明 / エラー対応

MySQL用語集

カテゴリー: エラー  閲覧数:218 配信日:2020-05-05 11:20


SHOW INDEX FROM user;


一覧表抜粋
Table Non_unique key_name Seq_in_index Column_name
user 0 PRIMARY 1 id
user 0 user_name_index 1 site_id
user 0 email 1 email
user 0 tw_user_id 1 tw_user_id
user 1 prefecture_code 1 prefecture_code

原因判明


要件変更のため、カラム追加したのに、インデックスが従来のままだっため
必ずしも「一意である必要がなくなったカラム」に対して、相変わらず「一意であるインデックス」を貼ったままだったから

従来
「site_id」「email」カラムには一意な値を必ず格納していた

今後
・「site_id」「email」カラムは使用しない
・デフォルトでは''を挿入するよう変更(一意ではなくなった)

今回の原因
・インデックスで一意指定している「site_id」カラムに対して、既存レコードと同じ値''を格納しようとしたため

エラー対応


一意ではなくなった「site_id」カラムに対して、相変わらずインデックス指定している「user_name_index」インデックスを削除する
ALTER TABLE user DROP INDEX user_name_index;


新たなエラーメッセージが表示された
( ! ) Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'email' in /var/www/xxxx.php on line xxxx

一意ではなくなった「email」カラムに対して、相変わらずインデックス指定している「emai」インデックスへ対しても、上記と同様に削除する
ALTER TABLE user DROP INDEX email;


→ 無事解決した

指定期間人気ページランキング / 2020-5-28 → 2025-8-2
順位 ページタイトル抜粋 アクセス数
1 #1241 - オペランドに 1 個の列が必要です。 | エラー 3705
2 MySQL用語 1587
3 クエリエラー: #1265 - 列 'カラム名' の 行 ★ でデータが切り捨てられました。 | エラー 1382
4 SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry | エラー 1379
5 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value | エラー 975
6 Data truncated for column | エラー 637
7 where clause is ambiguous | エラー 620
8 Incorrect integer value | エラー 602
9 クエリエラー: #1294 - 列 'カラム名' に ON UPDATE旬は無効です。 | エラー 598
10 <> | 演算子 477
11 スキーマ | データベースの構造 451
12 #1067 - Invalid default value for 'id' | エラー 414
13 インデックス | 最適化 408
14 SELECT list is not in GROUP BY clause and contains nonaggregated column | エラー 272
15 遭遇例1.INT型カラムに空文字INSERT 254
16 #3106 - 'Fulltext index on virtual generated column' is not supported for generated columns. | エラー 249
16 エラーメッセージ / エラー原因 / エラー対応 249
17 問題発生 / ハマった点 / indexを確認 244
18 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ★★ at line △△ | エラー 240
19 phpMyAdmin上で、VARCHARデータ型カラム を FLOATデータ型カラム へ変更しようとしたら、エラー発生 232
2025/8/3 1:01 更新