ど素人から毛を生やす。<延>

[MySQL]クエリも失敗するしHeidiSQLのエディタもバグる。原因はUTF-8BOMだった話。

Web > Other 2024年8月23日(最終更新:24日前)

どもです。
CSVファイルを読み込み、SQLを実行させたところ、Unknown column [INSERTした値] in first list エラーが発生してしまいました。

Unknown column は指定したカラムが存在しない場合に発生するエラーですが、カラムの型違い――数値型カラムに文字列をINSERTするなどでも発生します。
Unknown column [INSERTした値] というエラーになる場合は後者が原因と思われる。

しかし今回は数値型のカラムに数値を入れているので、型は正しいはず…
クエリを抜き出して見ても、やはり数値型に数値を入れています。

しかしこのINSERTをHeidiSQLにペーストしたところ、何故かエディタがバグる。
え、HeidiSQL壊れた??それともDBが壊れた???

取り敢えず数値をクォーテーションで囲って入れたところ、実行エラーにはなりませんでしたが、INSERTした数値が0に。
もしや目に見えない数値以外のデータが混入している??

そうあたりを付けて調べてみると、見た目上は半角空白でしかない「U+FEFF」という文字コードが混入していました。
なんだこの文字。

UTF-8のBOMだあ!!!

原因のCSVはExcelで保存したもののため、SJISに文字コード変更して再実行、したところ正常に成功。

U+FEFFは殆どのエディタで半角空白の見た目になるくせに、trim()等では取り除けないしSQL上では文字として扱われるし、HeidiSQLにペーストするとエディタが壊れる!!
なんて厄介な……

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)