Twitter / 角めぐみ
Movable Typeのカテゴリ名に文字数制限があるかどうか、どなたかご存知ですか?その制限を解除する方法があれば教えてくださいませ!
制限はあります。…けれど、具体的に幾つ? というのは調べたことがなかったのでこの際まとめてみました。
参照したソースコードは MovableType 5.01-ja。
カラム名 | 使途 | サイズ(bytes) |
---|---|---|
MT::Asset.label | アセットのラベル | 255 |
MT::Asset.url | アセットの絶対URL | 255 |
MT::Asset.description | アセットの説明文 | 65,535 |
MT::Asset.file_path | アセットのファイル実体のファイルパス部分 | 255 |
MT::Asset.file_name | アセットのファイル実体のファイル名部分 | 255 |
MT::Asset.file_ext | アセットのファイル実体のファイル拡張子部分 | 20 |
カラム名 | 使途 | サイズ(bytes) |
MT::Author.name | ユーザのログイン名 | 255 |
MT::Author.nickname | ユーザの表示名 | 255 |
MT::Author.email | ユーザのメールアドレス | 127 |
MT::Author.url | ユーザのホームページアドレス | 255 |
MT::Author.hint | (旧式) ユーザのパスワード回復のためのヒント | 75 |
カラム名 | 使途 | サイズ(bytes) |
MT::Blog.theme_id | ブログに適用されたテーマのID | 255 |
MT::Blog.name | ブログの名前 | 255 |
MT::Blog.description | ブログの説明 | 65,535 |
MT::Blog.site_path | ブログのサイト上の物理パス | 255 |
MT::Blog.site_url | ブログの公開URL | 255 |
MT::Blog.archive_url | アーカイブのサイト上の物理パス | 255 |
MT::Blog.archive_path | アーカイブの公開URL | 255 |
MT::Blog.sanitize_spec | 禁止するHTMLのリスト | 255 |
カラム名 | 使途 | サイズ(bytes) |
MT::Category.label | カテゴリの名前 | 100 |
MT::Category.description | カテゴリの説明 | 65,535 |
MT::Category.basename | カテゴリのベースネーム | 255 |
カラム名 | 使途 | サイズ(bytes) |
MT::Comment.author | コメント投稿者の名前 | 100 |
MT::Comment.email | コメント投稿者のメールアドレス | 127 |
MT::Comment.url | コメント投稿者のURL | 255 |
MT::Comment.text | コメント本文 | 65,535 |
カラム名 | 使途 | サイズ(bytes) |
MT::Entry.title | ブログ記事のタイトル | 255 |
MT::Entry.excerpt | ブログ記事の概要分 | 65,535 |
MT::Entry.text | ブログ記事の本文 | 65,535 |
MT::Entry.text_more | ブログ記事の追記 | 65,535 |
MT::Entry.to_ping_urls | トラックバック送信先アドレス | 65,535 |
MT::Entry.keywords | ブログ記事のキーワード | 65,535 |
MT::Entry.basename | ブログ記事のベースネーム | 255 |
カラム名 | 使途 | サイズ(bytes) |
MT::Log.message | ログのメッセージ本文 | 65,535 |
カラム名 | 使途 | サイズ(bytes) |
MT::Notification.name | 通知リストのユーザ名 | 50 |
MT::Notification.email | 通知リストのユーザのメールアドレス | 75 |
MT::Notification.url | 通知リストのユーザのURL | 255 |
カラム名 | 使途 | サイズ(bytes) |
MT::PluginData.plugin | プラグインデータのプラグイン名 | 50 |
MT::PluginData.key | プラグインデータのキーの名前 | 255 |
MT::PluginData.data | 格納されるデータ | 65,535 |
カラム名 | 使途 | サイズ(bytes) |
MT::Role.name | ロールの名前 | 255 |
MT::Role.description | ロールの説明文 | 65,535 |
カラム名 | 使途 | サイズ(bytes) |
MT::Tag.name | タグの名前 | 255 |
カラム名 | 使途 | サイズ(bytes) |
MT::TBPing.title | 受信したトラックバックの記事タイトル | 255 |
MT::TBPing.excerpt | 受信したトラックバックの概要分 | 65,535 |
MT::TBPing.source_url | 受信したトラックバックの送信元URL | 255 |
MT::TBPing.blog_name | 受信したトラックバックの送信元ブログ名 | 255 |
カラム名 | 使途 | サイズ(bytes) |
MT::Template.name | テンプレートの名前 | 255 |
MT::Template.outfile | テンプレートの出力ファイル名/パス | 255 |
MT::Template.text | テンプレートの内容 | 65,535 |
MT::Template.linked_file | テンプレートにリンクしているファイルのパス | 255 |
MT::Template.identifier' | テンプレートの内部識別名 | 50 |
カラム名 | 使途 | サイズ(bytes) |
MT::TemplateMap.file_template | テンプレートのファイル名生成テンプレート文字列 | 255 |
各カラムのサイズは文字数ではなく、バイト数である点に注意が必要です。例えば、文字コードが UTF-8 の場合、半角英数文字は 1 文字=1 バイトですが、日本語文字の場合は 1 文字=3 バイトを占めることが多いです。このあたりはデータベースの文字コード設定に関係してきますので、お使いのデータベースを確認してみてください。
おそらく現在で十分な設定値であると思いますが、運用上の問題などでデータサイズを変更したい場合など、以下の手順でカラムのサイズを変更することができます。ただし、この方法ではソースコードを直接書き換えるので、バージョンアップの度に作業が必要になりますので注意してください。
MovableType のソースコードのうち、/lib/MT/HogeHoge.pm
をテキスト エディタで開きます。ソースコードの最初の方に、テーブルのスキーマ定義があるので、必要な値に変更してください。
# 変更前: 'label' => 'string(100) not null', # 変更後: 'label' => 'string(255) not null',
ソースコードを修正したことを MovableType に伝えます。
# 変更前: ( $VERSION, $SCHEMA_VERSION ) = ( '5.01', '5.0016' ); # 変更後: ( $VERSION, $SCHEMA_VERSION ) = ( '5.01', '5.0017' );
MovableType の管理画面を開くとアップグレード ウィザードが実行されます。この時に、データカラムのサイズが変更されます。
寄せられたコメント (全 2 件中、最新 5 件まで表示しています)
その後、データベースの設定を見直してみたら、内部エンコードがlatin1になっていることに気づかずに実験していました。
エンコードをutf8に設定して試してみたところ、格納する文字のバイトコードに関係なく、varchar(255)では255文字格納できることが確認できました。
MTの設定の前にデータベースの設定を忘れずに、ということですね。
ToI企画の天野です。
気になって調べてみたのですが(MT5.01です)、「default-character-set=utf8」で起動されているMySQL(5.0.3以降)の環境だとVARCHAR(255)が「255バイト」ではなく「255文字」になるため、MTでも255文字まで保存できるっぽいです。