MySQLで次のようなSQL文を実行しようとすると、挿入されたレコードのデータでは、改行コード(\r\n)が一つだけ減った形になってしまいます。


実行するSQL文:insert into tmptable (comment) values ('\r\n\r\n\r\n\r\naaa')
テーブルに反映されるデータ:(改行)(改行)(改行)aaa

また、updateで同じようなSQL文を実行しようとしても、やはり改行コードが一つだけ減ってしまいます。
これはなぜでしょうか?また、どのように回避すればいいでしょうか?

テーブルtmptableのフィールドタイプはInnoDBで照合順序はeucjpms_japanese_ci、
comment列のフィールドタイプはtextで照合順序はeucjpms_japanese_ciです。
MySQLのクライアントバージョンは5.0.26です。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/04/24 16:32:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント60pt

フィールドタイプをblobにしたらいかがでしょうか。

id:tail_furry

blobにして試してみましたが、同じ現象になりました。

もしかしたらと思い、varchar, longtext, longblob, mediumtext, mediumblob, tinytext, tinyblob, charと全て試してみましたが、同じ現象です。

フィールドタイプは関係なさそうですね。

2008/04/24 13:12:45
  • id:tail_furry
    いろいろ試しているのですが、テストするテーブルによってそのような現象が起きる場合と起きない場合が出てきました。両方とも同じInnoDBです。
  • id:tail_furry
    挿入されたデータの確認には、phpMyAdminを使っています。phpMyAdminで確認できないデータについては、PHPでブラウザ上に出力して確認しています。
  • id:tail_furry
    気づいたのですが、phpMyAdminでデータの内容を見たとき、リストで表示している時には改行は画面上に出てきていますが、直接データの列の内容を見ると、テキストエリア内で最初の改行がかけてしまうようですね。このせいかな?
  • id:tail_furry
    <textarea></textarea>で囲まれたところにデータを表示した際、改行のあるデータを表示すると、最初の改行が無視されるため、データが欠けたように見えることが分かりました。
    ブラウザはFirefox 2.0とInternet Explorer 7、Netscape Navigator 9で確認しました。
    データとしてはちゃんと入っていたけど、データの確認の際にテキストエリア内に表示されたものが先頭が欠けたように見えていました。
    また、ボクのほうでPHPでブラウザ上に出力して確認した際にも、<textarea>タグ内に表示していたため、同じ現象になっていたようです。
    ブラウザ上に出力する際の解決策としては、<textarea>タグの後には改行を入れ、確認データと</textarea>タグの間には改行を入れない、という形でうまくいっています。
    お手数をおかけしました。質問を終了します。
    (これってphpMyAdminのバグになるんですかね。この場合はどこに報告すればいいんですかね。公式サイトは英語みたいですが、英語がさっぱりなので。。。)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません