このブログで記念すべきはてブ数200越えを記録し、人気記事となった「使ってるiPhoneアプリを90本評価付きで紹介してみる(2009年7月17日版)」ですが、実は本当は90本以上、紹介したかったのですが諸事情があって90本に減らした、という経緯があります。
それはなぜか本文が途中で切れてしまうのです……(T_T)。仕方なく初回するアプリの数を減らして文章を工夫してその時は投稿をしました。
その後調査をするとテキストの大きさを見てみると約64KB。何だか64KBで制約が掛かっていそうだぞ!とビビっと来た私は早速、設定ファイルの「adiary.conf.cgi」の内容をチェック。
226行目付近に以下の設定項目を発見。
# このサイズは日記データなどの最大サイズになります <$Form_options.total_max_size = 256K> <$Form_options.str_max_size = 512> input type="text" などの最大長(bytes) <$Form_options.txt_max_size = 64K>
これこれ!「<$Form_options.txt_max_size = 64K>」の64Kを128Kにしてみますが、64KBの壁は突破できません。
何で?
テスト用に設置したadiaryでテストしてみたら問題無く投稿できます。adiaryのテストサイトでチェックしてもこれまた問題無く長文を投稿できます。
う?ん困った。
adiaryのMLで助けを求めたところ、nabeさんからすぐに返事をいただきました。adiaryでは本文の保存にTEXT型で保存していますが、MySQLの制限で64KBに切り詰められるのだそうです。
なるほど。だからDBがテキスト版やPostgreSQL版で動作を確認しても問題無く長文が投稿できるわけです。
PhpMyAdminで次のSQL文を実行し、TEXT型をMEDIUMTEXT型に拡張しました。これで無事、64KB越えの文章を投稿することができるようになりました!
mysql> ALTER TABLE xxx_diary MODIFY _text MEDIUMTEXT;
mysql> ALTER TABLE xxx_diary MODIFY text MEDIUMTEXT;
(xxxは日記帳ID)
まとめると以下のような感じです。
■ adiaryで64KBを超える文章を投稿する方法
- 「adiary.conf.cgi」226行目付近の「<$Form_options.txt_max_size = 64K>」でサイズを増やす
- DBがテキスト、PostgreSQLの場合は以上で完了
- DBでMySQLを利用している場合、本文をTEXT型からMEDIUMTEXT型に変更する(SQL文は上記記事内容参照)
それにしても64KB以上の文章をよく書いたもんやな?と我ながら感心します(^_^;)。