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

MySQL用語集

カテゴリー: エラー  閲覧数:207 配信日: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-4-24
順位 ページタイトル抜粋 アクセス数
1 #1241 - オペランドに 1 個の列が必要です。 | エラー 3601
2 MySQL用語 1560
3 SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry | エラー 1356
4 クエリエラー: #1265 - 列 'カラム名' の 行 ★ でデータが切り捨てられました。 | エラー 1335
5 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value | エラー 927
6 Data truncated for column | エラー 608
7 where clause is ambiguous | エラー 600
8 Incorrect integer value | エラー 582
9 クエリエラー: #1294 - 列 'カラム名' に ON UPDATE旬は無効です。 | エラー 567
10 <> | 演算子 477
11 スキーマ | データベースの構造 451
12 インデックス | 最適化 407
13 #1067 - Invalid default value for 'id' | エラー 389
14 SELECT list is not in GROUP BY clause and contains nonaggregated column | エラー 265
15 #3106 - 'Fulltext index on virtual generated column' is not supported for generated columns. | エラー 245
16 問題発生 / ハマった点 / indexを確認 243
17 エラーメッセージ / エラー原因 / エラー対応 239
18 遭遇例1.INT型カラムに空文字INSERT 238
19 #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 △△ | エラー 233
20 phpMyAdmin上で、VARCHARデータ型カラム を FLOATデータ型カラム へ変更しようとしたら、エラー発生 228
2025/4/25 1:01 更新