私的アンテナTYPE-F(赤は48時間以内に更新されたコンテンツ)
<|日々の戯言アニメコミックゲーム美少女系ゲームフィギュアドール全般しーぽんちっちゃなもこちゃんえっくす☆きゅーとアキバ系りとらばU-10BLOGネットネタこのサイトについて|>

2007年04月02日 (月曜日)

[ BLOG ]

運用中MTのMySQLのテキストフィールドサイズを拡張する

PhpMyAdmin - 200 x 162
まず最初に。

この内容はMySQLで動作している古いバージョン(3.3以前)のMovable Type(以降MT)向けのものです。
最新のバージョンでは対応済のため(3.34で確認済)、作業そのものが不要です。
また一切無保証ですので、適用される方は自己責任でお願いします。

ということで、今回はMySQL上で動いているMTのテンプレート・エントリーテーブルのカラムタイプを変更します。
この作業を行うと各テキスト入力サイズが65535→16777215バイトに拡張され、最新の3.34と同様にロングテキストサイズのテンプレート、エントリーの扱いが可能になります。

実は昨年レンタルサーバを変えてBerkeley DBからMySQLへ移行した後、大きいサイズのテンプレートテキストが正常に保存出来ない問題に悩まされていました。
で、別件で調べ物をしていた時に偶々「MySQLでエントリーのフィールドサイズを拡張する」(小粋空間)を見つけたわけです。
まさに私の場合と同じで、何故これを移行前に見つけられなかったのかと、マジ悔みました('A`)

そんなわけでこの記事を元に簡単なSQLを追加し、運用中のテーブルに適用する手順を書いてみました。
まあ今更古いMT向けの小技に意味があるのか疑問ですがとりあえず・・・(^^;

作業はphpMyAdminで行います。必要な操作が出来れば、特にSQLの詳細が判らなくても構いません。
以下作業手順です。

1)MTDBのバックアップ。必ず行ってください

2)既存のテンプレート用(mt_template)、エントリー用(mt_entry)のテーブル定義をexportする

3)2)で出力されたテキストのCREATE TABLEを以下のように変更する(何れも3.171-jaのもの)
テンプレート用

CREATE TABLE `mt_template2` (
`template_id` int(11) NOT NULL auto_increment,
`template_blog_id` int(11) NOT NULL default '0',
`template_name` varchar(50) NOT NULL default '',
`template_type` varchar(25) NOT NULL default '',
`template_outfile` varchar(255) default NULL,
`template_rebuild_me` tinyint(4) default '1',
`template_text` textmediumtext,
`template_linked_file` varchar(255) default NULL,
`template_linked_file_mtime` varchar(10) default NULL,
`template_linked_file_size` mediumint(9) default NULL,
`template_created_on` datetime NOT NULL default '0000-00-00 00:00:00',
`template_modified_on` timestamp(14) NOT NULL,
`template_created_by` int(11) default NULL,
`template_modified_by` int(11) default NULL,
`template_build_dynamic` tinyint(4) default NULL,
PRIMARY KEY (`template_id`),
UNIQUE KEY `template_blog_id` (`template_blog_id`,`template_name`),
KEY `template_type` (`template_type`),
FULLTEXT KEY `template_text` (`template_text`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

エントリー用

CREATE TABLE `mt_entry2` (
`entry_id` int(11) NOT NULL auto_increment,
`entry_blog_id` int(11) NOT NULL default '0',
`entry_status` tinyint(4) NOT NULL default '0',
`entry_author_id` int(11) NOT NULL default '0',
`entry_allow_comments` tinyint(4) default NULL,
`entry_allow_pings` tinyint(4) default NULL,
`entry_convert_breaks` varchar(30) default NULL,
`entry_category_id` int(11) default NULL,
`entry_title` varchar(255) default NULL,
`entry_excerpt` text,
`entry_text` textmediumtext,
`entry_text_more` textmediumtext,
`entry_to_ping_urls` text,
`entry_pinged_urls` text,
`entry_keywords` text,
`entry_tangent_cache` text,
`entry_created_on` datetime NOT NULL default '0000-00-00 00:00:00',
`entry_modified_on` timestamp(14) NOT NULL,
`entry_created_by` int(11) default NULL,
`entry_modified_by` int(11) default NULL,
`entry_basename` varchar(50) NOT NULL default '',
PRIMARY KEY (`entry_id`),
KEY `entry_blog_id` (`entry_blog_id`),
KEY `entry_status` (`entry_status`),
KEY `entry_author_id` (`entry_author_id`),
KEY `entry_created_on` (`entry_created_on`),
KEY `entry_basename` (`entry_basename`)
) TYPE=MyISAM AUTO_INCREMENT=1;

4)新しいテーブルを作成するため、3)のSQLを実行する

5)テーブルデータを移行するため、以下のSQLを実行する
テンプレート用

insert into `mt_template2` select * from `mt_template` order by `template_id`;

エントリー用

insert into `mt_entry2` select * from `mt_entry` order by `entry_id`;

6)既存テーブルをリネームしてバックアップするため、以下のSQLを実行する
テンプレート用

alter table `mt_template` rename to `mt_template_backup`;

エントリー用

alter table `mt_entry` rename to `mt_entry_backup`;

7)新テーブルをリネームし既存のものと置き換えるため、以下のSQLを実行する
テンプレート用

alter table `mt_template2` rename to `mt_template`;

エントリー用

alter table `mt_entry2` rename to `mt_entry`;


作業は以上です。
管理画面よりテンプレート・エントリーに64KB越えのテキストをコピー&ペースト、無事に保存出来れば成功です。

それにしても検証用に試しに入れた3.34の管理画面の変わりっぷりに驚きました。
まさに取り残された気分を味わいましたね。
最新版に移行すればこんな作業も無用なのは判ってはいるのですが、元のソースをバリバリにいじっているので単純にそれも出来ない。
それがカスタマイズホリック(笑)の辛いところです。


【関連するリンク】
MySQLでエントリーのフィールドサイズを拡張する小粋空間
Movable Type (Six Apart)

トラックバック
このエントリーのトラックバックURL:

スパム対策の為、トラックバック元URLに本Blogへのリンクを含まない場合、トラックバックを受け付けない仕様になっています。また、Blogやそれに順ずるシステム以外からのトラックバックも受け付けません。予めご了承ください。
なお、お手数ですがトラックバックURLより「☆★」を取り除いてください(オートディスカバリ非対応です)
コメント
コメントする






情報を保存しますか?


画像の数字を入力