重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

サーバー移転のため、Movable Typeのデータベースをエクスポートしました。
移転先のサーバーにphpMyadminがインストールされていましたので、リストアしようとしましたが▼次のエラーが出ました。

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1195097 bytes) in /usr/home/MY HOST/www/htdocs/phpmyadmin/libraries/sqlparser.lib.php on line 212

データが2MB以上あるため、大きすぎたのかと思い、ネットで調べた▼次の方法をTera Termで試しました。

mysql -u MY HOST -p PASSWORD mt < /usr/home/MY HOST/www/htdocs/backup.sql

この方法でテーブルの構造はできあがるのですが、エントリーなどが反映されません。
何かよい解決方法をご存知の方がいらっしゃいましたら教えてください。

A 回答 (2件)

エクスポートしたバックアップファイル(backup.sql)


は、おそらく、CREATE文のあとに、INSERT文が続くSQL文になっていると思います。

状況は、CREATE文が入るのに、INSERT文が入らないということですので、INSERT文で落っこちているのではないでしょうか?
移行元、移行先のMysqlのバージョン、文字コード、エクスポートしたバックアップファイルの文字コードはいかがでしょうか?スキーマは入って、データが入らないというのは、そういうことが原因のことがよくあります。
(つまり、CREATE文では、テーブル名が英語の場合、文字コードは関係なくリストアできてしまいますが、INSERT文では、内容に日本語が入ってくると、そこで落ちてしまうということです。)

移行先のMySQLに関するこれらの情報は、phpMyAdminで確認出来ると思います。または、Tera Termでmysqlに入って、\sでキャラクタセットを確認できます。

ただし、もし4.1以降のMySQLへのリストアになる場合、ちょっと難しいことを補足しておきます。

たとえば、EUC-JPのバックファイルをリストアするときには、
----------------------------------
$ mysql -u MY HOST -p mt
----------------------------------

----------------------------------
set names ujis;
----------------------------------
(↑接続する文字コードの設定。
ファイルの文字コードがEUCの場合ujis、
Shift-JISの場合sjis、UTF-8の場合は、utf8)

----------------------------------
\s
----------------------------------
(Client characterset:が指定したものに
変わっていることを確認する)

----------------------------------
source /usr/home/MY HOST/www/htdocs/backup.sql
----------------------------------
(↑sourceコマンドでファイルからSQLを実行)

という手順になります。
ただ、4.0以前のMySQLからのバックアップを4.1以降にリストアするときには、データベース、テーブルの文字コードはUTF-8に勝手に変換されてしまいますので、指定したい場合は、さらに、4.1向けにCREATE文の書き直しが必要です。
また、4.1以降ですと、アプリの方がきちんと文字コード処理をやってくれるかどうかの問題もあります。
    • good
    • 0
この回答へのお礼

PCトラブルによりお礼が遅くなってすみませんでした。
アドバイスにより何とか解決できました。ありがとうございました。

お礼日時:2006/01/30 00:21

これってイレギュラーですが・・・


単純にMySQLのTOPディレクトリー(/var/lib/mysql)を移動先にコピーしてユIDとパーミッションを合わせて稼動しませんか?

私が MySQL が何かを調査中にシステムがクラッシュして、dumpテープから上記の手順でリカバーしたら完璧に戻って驚いた経験があります ^ ^;

Oracleの経験が長いので MySQL は軽薄?と思えるほどの軽量さだなぁ~と驚嘆しましたが、本当に助かったです

環境は turbolinux です。

この回答への補足

qaz_qwerty_meさん、お返事ありがとうございます。
教えていただいた方法は思いもよりませんでしたが、移転前も移転先もレンタルサーバーのため権限がなく恐らく不可能であるように思います。
サーバーに関してはど素人で、検索していろいろ試していますが何をやってもリストアできません。
データを分割したり、テーブルごとにリストアするような方法はないものでしょうか?
移転を急いでいたため、前のサーバーにもデータは残っていません。

データ数は1000件ほどなので、ひとつずつ手入力した方が早いような気がしてきました・・・
もし何か他に対処方がありましたら引き続きよろしくお願いいたします。

補足日時:2005/10/22 16:30
    • good
    • 0
この回答へのお礼

PCトラブルによりお礼が遅くなってすみませんでした。
アドバイスにより何とか解決できました。ありがとうございました。

お礼日時:2006/01/30 00:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す