かなりハマったので、備忘録的に投稿しておきます。Workbenchを使ってCSV形式からインポートしたテーブルに、クエリーを走らせた時に、ワイルドカードでは出来るのに、カラム指定するとエラーになることがありました。
CSVインポートしてテーブル作成
Excelを使って、適当にテーブルになるデータを登録して、CSVファイルに出力しておきます。(UTF-8 CSV形式を選択しました)
MySQL Workbenchから、[Table Data Import]メニューを選択して、作成したCSVファイルを読み込みます。
既定値のまま[Next]ボタンをクリックして、テーブルを作成します。
と、ここまでは順調に進んでました。
クエリー時にエラー
ストアドでもクエリーでも、インポートしたテーブルに対してワールドカード(*)を使って参照することはできます。
SELECT * FROM table;
しかし、列名を指定して選択するとエラーになってしまいます。
SELECT column1, column2, column3 FROM table;
Workbenchでカラムを確認しても特に問題がないように見えます。
列名の先頭に
調べていくと問題は、インポートした最初の列名にありました。何が起きたのか良く分かりませんが、「MySQL Workbench」上は特に問題ないように表示されています。
しかし、列名[Column Name]部分を編集状態にしてコピーして適当なエディター上に貼り付け操作をしてみます。
ここに原因が見えました。どうやらカラム名の先頭に見えない文字が入り込んでしまっていたみたいです。
まとめ
CUI(コマンド)の場合には、見えていたような感じをしますがGUIでは表示されている部分を信じてしまうことがあるので、見えない文字にハマることがあります。
GUIの場合文字コードによっては表示が変わらずに、表示されている文字を信じてしまうと、エラーの対応に悩んでしまうことが多々あります。
エラーの原因が見つからない場合には文字コードも確認してみる必要があります。CUIで操作している場合には、気が付くのがもっと早いと感じますが便利なので、どうしてもGUIツールに手が伸びてしまいます(笑)
選択クエリーでエラーになる場合には、ワイルドカードでの選択を確認して、出来るのであれば、列名の文字コードを疑ってみると解決に至るかもしれません。
スポンサーリンク
最後までご覧いただき、ありがとうございます。