MovableType 3.171 の引越しと、3.2ja2 へのバージョンアップ Windows 2003 2006.4.5 〜 |
Windows サーバーのバックアップを用意する過程で MovableType の引越しもやらなけれればならないが、思いもよらず手こずった。できるだけ問題が起きないように同じような環境で復元しようと作業を始めたが蹴躓いてしまった。
このぺージのもくじは、他のページとは違い時系列が逆になっていて、ページの上から下へと作業が流れていることをお断りしておく。
● MySQL はなかなか骨が折れる バージョン4.1.18 でうまくいった
● MovableType 3.171 ではキャラクタセットを UTF8 でインストしていた
● 保存データをエクスポート(取り出す)するには 内蔵コマンドの mysqldump.exe が一番
● MySQL の文字化け
● いつのまにかサービスがインストされてしまい、それを削除する方法
● データベースのダンプの方法
● Perl のDBI、DBD-mysql をインストール
● MovableType 3.2ja2 へのバージョンアップの基本はシンプルそのものだ
● 失敗談
● データのバックアップはどんな方法が簡単? データベースが MySQL の場合
【 MySQL はなかなか骨が折れる バージョン4.1.18 でうまくいった 】
無料で公開してもらっているのにケチを付けるのは筋違いであり、開発に携わってくださる皆様には感謝申し上げる。
バージョンによって動作が異なってくる事を胆に命じて、問題を解決することが一番のポイントになると思う。
MySQL にデータをエラーなしでインポートすることにはほとほと参った。しかし、何はさておいてもデータがインポート(ロード)出来なければなにも始まらないから、とにかく手探りでもやるしかなかった。
引越し元の MySQL 4.0.24 と同じバージョンの引越し先のMySQL にインポートしようとしたが、これがどうしてもエラーになり、データベースのデータをロードできなかった。
仕方なく他の新しいバージョンで試みたが最新バージョン MySQL 5.0.19 ではエラー(ERROR 1406 (22001) at line 102: Data too long for column 'blog_name' at row 1)でインポート出来なかった。やっと
MySQL 4.1.18 がエラーなくデータをインポートできことがわかった。
トップへ
【 MovableType 3.171 ではキャラクタセットを UTF8 でインストしていた 】
昔にインストしたこともありすっかりわすれていて、またよく理解もせずにやり始めたこともあって、キャラクタセットがどうなっていたかは興味がなかった。
今般の引越しトラブルに遭遇してその点がいやというほど思い知らされた。
MySQL に保存されるデータが
mt.cfg の指示通りに UTF8 だったことが分かった。これはエキスポートしたファイルを秀丸で読み込んで調べているときに分かった。データベースのキャラクタセットが sjis になっているとばかりおもっていたが実はそうではなかった。
それまでは sjis だと思い込んでいたが、秀丸がこのキャラクタセットにポイントがあることに気づかせてくれた。
ちなみに、従前の MovableType 3.171
の
mt.cfg の236行あたりにある、
#PublishCharaset Shift_JIS
#のコメントをはずして、
PublishCharaset utf-8
に変更していた。
トップへ
【 保存データをエクスポート(取り出す)するには 内蔵コマンドの mysqldump.exe が一番 】
mysqldump.exe コマンドを使おうとはたまたほかのツール・ソフトを使おうとも、保存データをエクスポートして生成されたファイルは上記の理由で UTF8 になっている。
MySQL 4.0.24 から MySQL 4.0.24 へデータを移す場合に、UTF 形式のファイルなので日本語の部分にカンマが混じった文字列になってしまう。MySQL では初期値でカンマをデータの区切り符号に設定しているので、もし日本語の単語の中にカンマが混じっていたらそこで単語が分断されデータの意味を失ってしまい、本来の目的の区切り符号のカンマの数より多くなってしまいMySQL 内で混乱が起きエラー処理がされてしまう。
しかし、
なぜ、
MySQL 4.1.18 ではエラーも発生せずに取り込めるかはまったく不明である???。
また、このコマンド以外でも他のソフト・ツールでもエクスポート/インポートは出来るが、仮に同じエクスポートデータファイルを MySQL にインポートさせる場合に、エラーの出方が異なり訳がわからない。よって、MySQL の mysqldump.exe コマンドを使うのが一番無難であることを悟った。
(例)
cd \mysql\bin
mysqldump -u root -pxxxxxxx mt > mt.sql xxxxxxxはMySQL にログインするために必要なパスワード。-pの後に空白を開けないのがポイント。
ちなみに、 MySQL 4.0.24 の内部の設定がどうなっているのかをステータス情報でみてみると、
mysql -u root -pxxxxxxx でログインして、
mysql> status をキーイン
キャラクタセットはクライアントもサーバも共に sjis になっている。これは下表のMySQL 4.0.24 の my.ini がキャラクタセットに反映しているのだろう。
ところで、Mysql 5.0.18 では全部
sjis になる設定もできるが、 ほんとうなら他のバージョンでもこのように設定できるなら問題が起きてなかったかもしれない。これは v.5.0.18 の設定例で、Db データベース と Conn. 接続のキャラクタセットがそれぞれ設定できている。
ちなみに、
my.ini ファイルにこれらの設定が書き込め、
# CLIENT SECTION
[mysql]
default-character-set=sjis
# SERVER SECTION
[mysqld]
default-character-set=sjis
の2箇所だけで、Mysql 5.0.18 ではなぜか4つのキャラクタセットが設定できるようである。
現在のMySQL 4.0.24 の my.ini でも2箇所の設定をしているが、2つのキャラクタセットが設定できるだけである??
[mysqld]
basedir=c:\Program Files\mysql\
datadir=c:\Program Files\mysql\data
default-character-set=sjis
[WinMySQLAdmin]
Server=C:/Program Files/MySQL/bin/mysqld.exe
[mysql]
default-character-set=sjis
[mysql-dump]
default-character-set=sjis
|
MySQL バージョン 5.0 では、
[mysqld]
default-character-set=ujis
この一つの設定で、
Server characterset: ujis
Db characterset: ujis
のように、同時に2つ変更しているようだ。
V.5.0で内部に設定されたキャラクタセットをみることができる。ログインしておいて、
mysql> show character set;
しかし、v.4.0 ではこのコマンドはサポートされてない。
my.ini ファイルは
C:\WINDOWS\my.ini にある。ここになくともインストールディレクトリにあれば読んでくれるようである。
C:\Documents and Settings\Administrator.C32ND>cd C:\Program Files\MySQL\bin
C:\Program Files\MySQL\bin>mysql -u root -pxxxxxxxxx でログイン
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5401 to server version: 4.0.24-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> status ・・・・4.0.24 の内部設定情報を読んでみる
--------------
mysql Ver 12.22 Distrib 4.0.24, for Win32 (ia32)
Connection id: 5401
Current database:
Current user: root@localhost
SSL: Not in use
Server version: 4.0.24-nt
Protocol version: 10
Connection: localhost via TCP/IP
Client characterset: sjis
Server characterset: sjis
TCP port: 3306
Uptime: 48 days 22 hours 17 min 7 sec
Threads: 2 Questions: 481130 Slow queries: 0 Opens: 5366 Flush tables: 1 Op
en tables: 0 Queries per second avg: 0.114
--------------
mysql>
トップへ
【 MySQL の文字化け 】
これはMovableType 上の表面的な見え方で、MySQL の保存されているデータが改変されてしまったことではない。あくまでも送り手と受け手のキャラクタセットが違っているために起きていることである。 エラーなくデータがエキスポート/インポートできていればMySQL の本質的な問題ではない。ただバージョンによってうまくインポートできたりできなかったりするのでその意味ではMySQL に問題があるといえなくもない。
トップへ
【 いつのまにかサービスがインストされてしまい、それを削除する方法 】
このサービスが生きたままだと MySQL をインストできたとしても起動しない!
ローカルサービスをしらべて動いていることが分かった。
で、このサービスの名前が MySql であることがローカルサービスを開けばわかる。
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>sc.exe delete MySql ・・・MySql はすでに登録されているサービス名
[SC] DeleteService SUCCESS
C:\Documents and Settings\Administrator>
また、以下の方法でもOK?
削除方法
c:\mysql\bin\mysqld-nt.exe --remove サービス名
おまけ:Windows サービスの登録方法
c:\mysql\bin\mysqld-nt.exe --install サービス名
mysqld のオプションを指定したい場合は:
c:\mysql\bin\mysqld-nt.exe --install サービス名 --defaults-file=c:/mymy.txt
のように、指定したいオプションをサービス名の後につける。
トップへ
【 データベースのダンプの方法 】
引越しもとのMySQL 4.0.24 では、これで完全バックアップを取れる
cd \mysql\bin
mysqldump -u root -pxxxxxxx mt > mt.sql xxxxxxxはパスワード。-pの後に続けること
これで1.3Mbほどのファイルがつくられる。
これを引越し先で復元するが、MySQLのバージョンが 5.0.19 だと以下のようなエラーになり「ブログ名が長すぎると」と怒られる!!
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>cd C:\Program Files\MySQL\MySQL Server 5.0\bin
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root -pxxxxxxx mt < d:\mt.sql
ERROR 1406 (22001) at line 102: Data too long for column 'blog_name' at row 1
C:\Program Files\MySQL\MySQL Server 5.0\bin>
しかし、MySQL4.0.24 だとカンマ区切り誤動作でエラーになりインポートできない!
バージョンが違うとこれだけ動作の違いがでてくるが、その原因はさっぱりわからない。
MySQL4.1.18 だと、ちゃんとエラーもなく復元できる!!
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>cd C:\Program Files\MySQL\MySQL Server 4.1\bin
C:\Program Files\MySQL\MySQL Server 4.1\bin>mysql -u root -pxxxxxxx mt < d:\mt.sql
C:\Program Files\MySQL\MySQL Server 4.1\bin>エラーが起きない!ハッピー
トップへ
【 Perl のDBI、DBD-mysql をインストール 】 古い関連ページ
これらをインストールしないとPerl とMySQL が関連づけられず、以下のように Movable 自体がちゃんと動作しない。
http://localhost/cgi-bin/mt.cgi
を実行すると、
Got an error: Unsupported driver MT::ObjectDriver::DBI::mysql: Can't locate DBI.pm in @INC (@INC contains: D:\home\weblog\cgi-bin\extlib D:\home\weblog\cgi-bin\lib c:/Perl/lib c:/Perl/site/lib .) at D:\home\weblog\cgi-bin\lib/MT/ObjectDriver/DBI.pm line 9. BEGIN failed--compilation aborted at D:\home\weblog\cgi-bin\lib/MT/ObjectDriver/DBI.pm line 9. Compilation failed in require at D:\home\weblog\cgi-bin\lib/MT/ObjectDriver/DBI/mysql.pm line 9. BEGIN failed--compilation aborted at D:\home\weblog\cgi-bin\lib/MT/ObjectDriver/DBI/mysql.pm line 9. Compilation failed in require at (eval 5) line 1. BEGIN failed--compilation aborted at (eval 5) line 1. |
のエラーとなりMovableType の画面が表示されない。
そこで、DBI、DBD-mysql をインストールする。
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>cd C:\Perl\bin
C:\Perl\bin>ppm
PPM - Programmer's Package Manager version 3.4.
Copyright (c) 2001 ActiveState Software Inc. All Rights Reserved.
Entering interactive shell. Using Term::ReadLine::Perl as readline library.
Type 'help' to get started.
ppm>
ppmにはいれたので、つづいて DBI をインストールする
ppm> install DBI
====================
Install 'DBI' version 1.50 in ActivePerl 5.8.8.817.
====================
Downloaded 558145 bytes.
Extracting 73/73: blib/arch/auto/DBI/Driver_xst.h
Installing C:\Perl\site\lib\auto\DBI\dbd_xsh.h
Installing C:\Perl\site\lib\auto\DBI\DBI.bs
Installing C:\Perl\site\lib\auto\DBI\DBI.dll
Installing C:\Perl\site\lib\auto\DBI\DBI.exp
Installing C:\Perl\site\lib\auto\DBI\DBI.lib
Installing C:\Perl\site\lib\auto\DBI\dbipport.h
Installing C:\Perl\site\lib\auto\DBI\dbivport.h
Installing C:\Perl\site\lib\auto\DBI\DBIXS.h
Installing C:\Perl\site\lib\auto\DBI\dbi_sql.h
Installing C:\Perl\site\lib\auto\DBI\Driver.xst
Installing C:\Perl\site\lib\auto\DBI\Driver_xst.h
Installing C:\Perl\html\bin\dbiprof.html
Installing C:\Perl\html\bin\dbiproxy.html
Installing C:\Perl\html\site\lib\DBI.html
Installing C:\Perl\html\site\lib\Roadmap.html
Installing C:\Perl\html\site\lib\Bundle\DBI.html
Installing C:\Perl\html\site\lib\DBD\DBM.html
Installing C:\Perl\html\site\lib\DBD\File.html
Installing C:\Perl\html\site\lib\DBD\Proxy.html
Installing C:\Perl\html\site\lib\DBD\Sponge.html
Installing C:\Perl\html\site\lib\DBI\Changes.html
Installing C:\Perl\html\site\lib\DBI\DBD.html
Installing C:\Perl\html\site\lib\DBI\FAQ.html
Installing C:\Perl\html\site\lib\DBI\Profile.html
Installing C:\Perl\html\site\lib\DBI\ProfileData.html
Installing C:\Perl\html\site\lib\DBI\ProfileDumper.html
Installing C:\Perl\html\site\lib\DBI\ProxyServer.html
Installing C:\Perl\html\site\lib\DBI\PurePerl.html
Installing C:\Perl\html\site\lib\DBI\Roadmap.html
Installing C:\Perl\html\site\lib\DBI\W32ODBC.html
Installing C:\Perl\html\site\lib\DBI\Const\GetInfoReturn.html
Installing C:\Perl\html\site\lib\DBI\Const\GetInfoType.html
Installing C:\Perl\html\site\lib\DBI\Const\GetInfo\ANSI.html
Installing C:\Perl\html\site\lib\DBI\Const\GetInfo\ODBC.html
Installing C:\Perl\html\site\lib\DBI\DBD\Metadata.html
Installing C:\Perl\html\site\lib\DBI\ProfileDumper\Apache.html
Installing C:\Perl\html\site\lib\DBI\SQL\Nano.html
Installing C:\Perl\html\site\lib\Win32\DBIODBC.html
Files found in blib\arch: installing files in blib\lib into architecture depende
nt library tree
Installing C:\Perl\site\lib\DBI.pm
Installing C:\Perl\site\lib\Roadmap.pod
Installing C:\Perl\site\lib\Bundle\DBI.pm
Installing C:\Perl\site\lib\DBD\DBM.pm
Installing C:\Perl\site\lib\DBD\ExampleP.pm
Installing C:\Perl\site\lib\DBD\File.pm
Installing C:\Perl\site\lib\DBD\NullP.pm
Installing C:\Perl\site\lib\DBD\Proxy.pm
Installing C:\Perl\site\lib\DBD\Sponge.pm
Installing C:\Perl\site\lib\DBI\Changes.pm
Installing C:\Perl\site\lib\DBI\DBD.pm
Installing C:\Perl\site\lib\DBI\FAQ.pm
Installing C:\Perl\site\lib\DBI\Profile.pm
Installing C:\Perl\site\lib\DBI\ProfileData.pm
Installing C:\Perl\site\lib\DBI\ProfileDumper.pm
Installing C:\Perl\site\lib\DBI\ProxyServer.pm
Installing C:\Perl\site\lib\DBI\PurePerl.pm
Installing C:\Perl\site\lib\DBI\Roadmap.pm
Installing C:\Perl\site\lib\DBI\W32ODBC.pm
Installing C:\Perl\site\lib\DBI\Const\GetInfoReturn.pm
Installing C:\Perl\site\lib\DBI\Const\GetInfoType.pm
Installing C:\Perl\site\lib\DBI\Const\GetInfo\ANSI.pm
Installing C:\Perl\site\lib\DBI\Const\GetInfo\ODBC.pm
Installing C:\Perl\site\lib\DBI\DBD\Metadata.pm
Installing C:\Perl\site\lib\DBI\ProfileDumper\Apache.pm
Installing C:\Perl\site\lib\DBI\SQL\Nano.pm
Installing C:\Perl\site\lib\Win32\DBIODBC.pm
Installing C:\Perl\bin\dbiprof
Installing C:\Perl\bin\dbiprof.bat
Installing C:\Perl\bin\dbiproxy
Installing C:\Perl\bin\dbiproxy.bat
Successfully installed DBI version 1.50 in ActivePerl 5.8.8.817.
ppm>
さらに、DBD-mysql をインストする
ppm> install DBD-mysql
====================
Install 'DBD-mysql' version 3.0002 in ActivePerl 5.8.8.817.
====================
Downloaded 610273 bytes.
Extracting 17/17: blib/arch/auto/DBD/mysql/mysql.lib
Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.bs
Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.dll
Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.exp
Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.lib
Installing C:\Perl\html\site\lib\Mysql.html
Installing C:\Perl\html\site\lib\Bundle\DBD\mysql.html
Installing C:\Perl\html\site\lib\DBD\mysql.html
Installing C:\Perl\html\site\lib\DBD\mysql\INSTALL.html
Files found in blib\arch: installing files in blib\lib into architecture depende
nt library tree
Installing C:\Perl\site\lib\Mysql.pm
Installing C:\Perl\site\lib\Bundle\DBD\mysql.pm
Installing C:\Perl\site\lib\DBD\mysql.pm
Installing C:\Perl\site\lib\DBD\mysql\GetInfo.pm
Installing C:\Perl\site\lib\DBD\mysql\INSTALL.pod
Installing C:\Perl\site\lib\Mysql\Statement.pm
Successfully installed DBD-mysql version 3.0002 in ActivePerl 5.8.8.817.
ppm>
ともにエラーもなく成功した。
これでmt-check.cgi が成功するか?
とりあえずMovableType の画面は表示はするようになったが ?????? で文字化けしている!
で、これは別の原因なのでそれを調べてみると
C:\Perl\bin>cd C:\Program Files\MySQL\MySQL Server 4.1\bin
C:\Program Files\MySQL\MySQL Server 4.1\bin>mysql -u root -pxxxxxxx
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14 to server version: 4.1.18-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=sjis
の条件でやると以下の2つに反映する
mysql> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | sjis |
| character_set_results | latin1 |
| character_set_server | sjis |
| character_set_system | utf8 |
+--------------------------+--------+
6 rows in set (0.00 sec)
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
mysql> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+--------+
しかし、なぜか[mysql]側の sjis を変えてもパラメータには変化が現れない!?・・・・でもこれにしておく
[mysql]
default-character-set=sjis
[mysqld]
default-character-set=utf8
mysql> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+--------+
mysql>
しかし、4.0.24では
mysql> show variables like 'character\_set\_%'; と実行しても、
Empty set(0.01 sec)
と返されてなにも見えないので、WinMySQL admin1.4 を起動して見てみると、一箇所だけcharacter_set(キャラクタセット)sjisが見える。
これがどのキャラクタセットを表しているのかが不明だが・・・・
MySQL 4.1.18 でもUTF8 に変更して、MovableType3.17 のフィアルも一部UTF8 に明示的にすれば文字化けがなくなった。
しかし、一難去って、また一難。
こんどは新規にエントリして保存しようとしたら、エラー
エラーが発生しました:
D:\home\weblog\public_html\index.html.new のテンポラリーファイルの名前の変更に失敗しました:
ファイル名を「D:\home\weblog\public_html\index.html.new」から「D:\home\weblog\ public_html\index.html」に変更できません: Permission denied |
public_html のパーミッションを変更したらとりあえずOKになったが正道ではない気がする?
他の原因があるのだろう。
mt.sql を無修正でC3nd からもってきて、MySQL4.1.18 にUTF8 でロードする。そのデータをMySQL-Front で開いてみると軒並み ?????? となっている。そのファイルも秀丸で開くと5つほどエラーがあるが下段をみるとUTF8 の表示になっている。
また日本語はちゃんと表示している。
cgi-bin に 3.2ja2 を丸ごとコピーして mt.cgi を開くと、いきなり始まる
ウェブログの設定の画面を出すURL・・・
http://1xx.xxxx.x.x40/cgi-bin/mt.cgi?__mode=view&_type=blog&id=1&blog_id=1
http://1xx.xxxx.x.x40/cgi-bin/mt.cgi?__mode=view&_type=blog&id=1&blog_id=1
ちょっと見えてきた
ウェブログの名前:Good by ! よらしむべし、知らしむべからず
ローカル・サイト・パス:D:/home/weblog/public_html
サイトのURL:http://1xx.xxxx.x.x40/blog
ローカル・アーカイブ・パス:D:\home\weblog\public_html\archives
アーカイブのURL:http://1xx.xxxx.x.x40/blog/archives/
時間帯:UTC+9(日本時間)
のように2箇所だけ変えた。-->変更を保存
する
☆☆☆ ポイント
☆☆☆
D:\home\weblog\Public_html\cgi-bin ディレクトリだけをごっそり入れ替えても V.3.2 にならないし、もとの 3.171-ja にも戻らない。というのも\Public_htmlにあるindex.html がそのまま残るわけでちゃんと替わったことにならないからだ。
\weblog 丸ごと入れ替えるのが誤りがなくていい。
MySQL 4.4.18のロードデータは、
まず、MySQL 4.0.24側でダンプするところから始まる。
C:\Program Files\MySQL\bin>mysqldump -u root -pxxxxxxx mt >mt.sql
C:\Program Files\MySQL\bin>
さきにMySQL-Front を使ってMySQL 4.1.18 内にデータベース名 mt をつくる。このときのキャラクタセットは UTF8 にしておく。
あらかじめMySQL 4.1.18 の my.ini の設定は、
[mysql]
default-character-set=sjis
[mysqld]
default-character-set=utf8
変更したらシャットダウンと再スタートをやって準備しておくこと。
C:\Program Files\MySQL\bin>mysqladmin -u root -pxxxxxxx shutdown
C:\Program Files\MySQL\bin>net start mysql41・・・あらかじめサービスにこの名前 mysql41 がつけてある。
mysql> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+--------+
でみてみても
[mysql]
default-character-set=sjis の反映はされない!?
しかし、これらの条件下でやると
MovableType 3.171-ja でちゃんと表示もするし、エントリーも書けるし、区切り符号がでてくることもない。
ということは、MySQL 4.0.24 とか MovableType 3.171-ja が壊れていたわけではなく IIS6.0 が壊れていることが推察できる。
エントリの文字化けはなくなった
しかしエントリの保存をしようとするとなぜかエラーになる。
http://c3plamo.slyip.com/cgi-bin/mt.cgi?__mode=start_rebuild&blog_id=1&next=0&type=entry-290&entry_id=290&is_bm=&is_new=0&old_status=2
エラーが発生しました:
Can't call method "title" without a package or object reference at D:\home\weblog\cgi-bin\lib/MT/App/CMS.pm line 3619.
なぜか保存ができなくなっているので「再構築」をやってみる。
しかし、おなじエラーとなる。しかし、エントリーにはちゃんと入っているが、index.html に反映されない。
まぁ、原因がわからないので MovableType 3.2に アップしてみる。
といってもcgi-bin ディレクトリをすべて消して3.2 のをコピーしただけ。もう少し説明してみると、
トップへ
【 MovableType の引越しと 3.2ja2 へのバージョンアップの基本はシンプルそのものだ 】
MovableType がインストされているブログのディレクトリ(エントリが保存されているディレクトリと純粋にMovabeType だけがインストされているディレクトリ)を丸ごと引越し先にコピーする。
そのディクトリ構成
が実際どうなっているかはそれぞれのマシンによって違ってくるので、読み替えてほしい。
つぎにMovableType がインストされていた方のディレクトリの中身を全て削除して、そのかわりに本家からダウンロードしてきた MT-3_2-ja-2.zip ファイルを解凍して、それらを全てそこにコピーする。解凍する作業場所でどこでもかまわない。
真っ先に、mt-config.cgi を編集しなければならない。
すでに、引越し先のデータベースMySQL も準備万端になっているならば、あとやることはこの mt-config.cgi ファイルを含めた全ての解凍したホルダー、ファイル類を引越し先のホルダーにコピーするだけである。
FTPでも、ネットワーク経由でも、USBメモリでもどんな方法でもかまわないのでコピーするだけである。
もっともはじめから引越し先で解凍から始めてもかまわない。
すでに一度は Windows 内でIIS の設定、CGI の設定、MySQL の設定はされているのでここであえて説明をすることはしないが、不明なことがあれば先のページが参考になるかもしれない。また、ネット上にも情報があるので参考にされたい。事前にCGI の設定ができているのはいうまでもない。
ポイントは、
・mt-config.cgi の設定
・my.ini の設定
・IIS、CGI の設定
・データベースをいかに転送できるか
になると思う。
これらポイントがすべてクリアされたら後は目をつぶっていても最後までいくと思う。
いよいよ最後の作業になる。
(例)ディレクトリなどは読者の環境に従って読み替えてくだされ。
http://localhost/cgi-bin/mt-check.cgi
を開いて所定の機能が動いていることを念のため確認して、
続いて、http://localhost/cgi-bin/mt.cgi を開けば「インストールが終了しました」のページが表示され、全ての作業が終わる。
指示通りに「アップグレードの開始」をクリックするだけである
トップへ
【 失敗談 】
まごついたこと、失敗したことはいっぱいあったが、そのなかで気づいたことを書き留めている。
v.3.2の画面がでてきたときにタイトルとかエントリが文字化けしていたが、しかし偶然にも3.1.7の画面が残っていて、その画面からはエントリーもちゃんと表示出来ていたのでMySQL 4.1.18 内のデータが改変されているのではないと知った。これはおおきな収穫だった。さっそく、mt-config.cgi を変えてみた。
mt-config.cgi の
” SQLSetNames 0 ”でなければならなかった!!!
” SQLSetNames 1 ”が正しい設定と思いこんでいて作業をやっていて、やれども文字化けから脱出出来なかった。また、アップグレードが起動しても、MySQL 4.1.18 のなかのデータが化けているわけではなかった事も分かった。
これで、ちゃんとエントリーもエラーなく保存でき、文字化けもなくなった。大成功!!!
トップへ
【 データのバックアップはどんな方法が簡単? データベースが MySQL の場合 】
万が一のためにブログのデータをバックアップしておかないと心配だが、ブログは頻繁にエントリーが増えていきどのようにバックアップをとるかは悩ましい問題である。また他に引越しさせるときにも同じ問題となる。
定期的にはディスクのイメージをバックアップすることになるが、毎日となるとこれも難しいかもしれない。
そこで、出来るだけ簡単にバックアップできないものかと試したところデータベース MySQL からは
mysqldump -u root -pxxxxxxx mt >mt.sql
のようにダンプで取り出して、
mysql -u root -pxxxxxxx mt < d:\mt.sql
で取り込む。
取り込む場合はデーターベースが空になってないとエラーがでて鬱陶しいので、取り込む前に空にしておくか、削除して新たに従前の名前で作り直しておくかの準備が必要である。しかしこの作業は MySQL−Front のようなツール・ソフトがあれば10秒でできるので作業自体が問題になることはない。
これで最新のデータが得られる。
やはり一番厄介なのは、どうやって MovebleType から「エントリーの読み込み書き出し」と「画像データの読み込み・書き出し」をやるかである。
エントリーだけなら mt.cgi を実行、MovableType にログインして「設定」-->「エントリーの読み込み書き出し」で対応できるが、これだとカテゴリ毎に同じ操作を繰り返さなければならず数が多いと躊躇する。また画像データを取り込めない欠点がある。
そうするとディレクトリ丸ごとコピーする方法が結局は速く確実な方法といえる。通常はコピーが使えないことの方が多いだろうが、その時は FTP を使えばいい。データベースMySQL からのダンプ・書き込みの方は前述したとおりにおこなう。
この方法なら、ウェブログサイトの変更にも対応できる。
MySQL のデータベース内部のデータと mt-config.cgi の両方を矛盾せずに変更すれば全く違った環境へも引越しできる。この場合、コピーが終わって index.html 画面をだしたときにちゃんとでないことがあるが、その時は mt-update.cgi を動かしてさらに再構築をやれば復旧できた。下図は MySQL−Front を操作して直接データベースのデータを書き換えている画面サンプルである。
ホームへ Windows Server 2003 Enterprise VIA C3で動かす トップへ Movable Type 3.17 インストのまとめ
|