【MySQL】エラーが出た時の考えられる原因と対処法

当ページのリンクには広告が含まれています。
クエスチョンマーク
  • URLをコピーしました!
にほんブログ村 ブログブログ 雑記ブログへ
にほんブログ村

今回はMySQLでSQL文を実行したときに起きるエラーの原因と対処法についてご紹介します。

間違いがあれば教えていただけると嬉しいです!

目次

エラー1:Unknown column “hoge” in ‘field list’

SQL文を実行しようとしたら、

Unknown column “hoge” in ‘field list’

というエラーが出る場合です。

「そんなカラムないよ!」というエラーですね。

原因1 自動変換

MacOSの場合ですが、シングルクォーテーションやダブルクォーテーションを自動変換する大きなお世話機能があります。

元:”

変換後:“

この機能が原因でエラーになっている可能性があります。

うっとうしいようであれば、自動変換を無効にすることもできます。

SATOPEDIA
【Mac】勝手に変換されるクォーテーションとダッシュへの対応方法|SATOPEDIA Mac で文章を入力したり、コピペした時に、クォーテーションやダッシュが勝手に変換されて困っていませんか? Macのスマ

原因2 カラム名が違う

そもそも指定しているカラム名が違う可能性があります。

正:prefecture_name
誤:prefecturename

のようにカラム名が違うとエラーになります。

タイプミスがないかチェックしてみましょう。

わたしは別のテーブルから取得した値をテーブルにINSERTするときにこのミスをしました。

ちなみに別のテーブルから取得した値をINSERTするときは、指定するカラムの数が違うとエラーになります。

カラムの数は揃えてくださいね。

エラー2:Data truncated for column ‘hoge’ at row XX

このエラーは、別のテーブルから取得した値をテーブルにINSERTするときを想定しています。

SQL文を実行しようとしたら、

Data truncated for column ‘hoge’ at row XX

というエラーが出る場合です。

原因1 カラムの型が違う

これはINSERTするデータのテーブルの型が違うことが原因の可能性があります。

極端な例ですが、

テーブルA:INT(20)

テーブルB:DATE

とか。

原因2 文字数の指定が違う

型は合っているものの、後ろの文字数が違う場合ですね。

テーブルA:VARCHAR(20)

テーブルB:VARCHAR(10)

テーブルAは20なのにテーブルBは20にしているので、エラーになります。

エラー3:UNIQUE constraint failed

UNIQUE constraint failed: {table名} .{カラム名}

このエラーはシステムによっては起きる可能性があるエラーです。

例えば以下のSQLを実行します。

このSQLでは主キー(プライマリーキー)のカラムp_keyの値1と2を入れ替えています。

UPDATE  HogeTable
SET  p_key = CASE WHEN  p_key = '1' 
				  THEN  '2' 
				  WHEN p_key = '2' 
				  THEN '1'
				  ELSE p_key END
WHERE p_key IN ( '1', ' 2' );

これを実行すると、MySQLやPostgreSQLではエラーになります。

原因1 主キーの重複エラー

p_key が ‘1’のとき、’2’に値を変更しようとしています。

そのときまだp_key = ‘2’の値は’1’に変更されずに残っているわけなので、p_keyカラムには’2’が2つあるんですね。

値が重複しているので、このエラーが起きています。

とはいえ、WHEN p_key = '2' THEN '1'で’2’の値は’1’に変更されるので、一時的に重複しているにすぎません。

なので、Oracleなどではエラーにはならないようです。

この辺システム間で統一しておいて欲しい(切実)

終わりに

SQLを触り始めたばかりの頃って特にエラーの原因がよくわからないですよね…

SQLのエラーについては原因が色々考えられるので、特定が難しいですが、経験値を貯めていけばサクッと解決できそうです!

今のところはこれくらいですが、また遭遇したエラーがあれば追記します!

MySQLを学習するなら、以下の本がおすすめです。

実際に手を動かしながら確認できるので、頭に入りやすいですよ。

「SQLって何?」という基礎の部分からしっかり学べる点も魅力です。

わたしは今でも手元に持ってたまに読み返しています。

プログラミングを真剣に学習したい人は、スクールもおすすめです。

以下の記事では、元講師のわたしが選んだおすすめできるスクールをご紹介しています。

よかったらぜひ読んでみてください!

ではでは〜

にほんブログ村 ブログブログ 雑記ブログへ
にほんブログ村
よかったらシェアしてね!
  • URLをコピーしました!
目次