1

MySQL4 によって作成されたデータベース (db4) と、MySQL5 によって作成されたデータベース (db5) があります。db4 には、文字セット latin1 といくつかのインデックスを持ついくつかのテーブルが含まれていますが、MySQL の "PASSWORD" 関数を使用して暗号化されたデータは含まれていません。db5 は空です。

すべてのテーブルとインデックスを db4 から db5 (実際には同じサーバー上にあります) に移行したいと考えています。理想的には、これは情報を失うことなく、短時間で行う必要があります。

MySQL4 から完全なデータベースをダウンロードし、後でデータを db5 に挿入するには、どの端末コマンドが必要ですか? インデックスを再作成する必要がありますか?

4

4 に答える 4

2

他の誰かがデータベースを Mysql4 から Mysql5 に移動する必要がある場合に備えて、私は次のことを行いました。

  1. mysql4 サーバーからデータベースをダンプする

    mysqldump -uuser -ppass db4 > db4.sql
    
  2. いくつかの構文の問題を修正 ( source )

    # change comment style from -- to #
    sed -r -i -e 's/^--(.*)$/#\1/' db4.sql
    # change type declaration keyword from "TYPE" to "ENGINE"
    sed -i -e 's/) TYPE=/) ENGINE=/' db4.sql
    # adapt  timestamp field definition
    sed -i -e 's/timestamp(14) NOT NULL,$/timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,/' db4.sql
  1. mysql5 サーバーで、変更された SQL ダンプをインポートできるようになりました

    mysql -uuser -ppass db5 < db4.sql
    
于 2015-06-22T13:44:57.060 に答える
1

次のコマンドを使用して、1 つのステップで実行することもできます。

 mysqldump -u dbo4 --password="..." --default-character-set="latin1" db4 | mysql -S /tmp/mysql5.sock -u dbo5 --password="..." --default-character-set="latin1" db5

残念ながら、特殊文字を含む標準値は正しくインポートされず、それを回避する方法はないようです: How to maintain character-set of standard-values when uploading MySQL-dump .

于 2012-08-01T12:48:07.847 に答える