2

WAMP インストールに付属している MySQL データベース バージョン 5.1.36 があります。私はこれを Windows XP SP3 での開発目的で使用しました。中にはキリル文字のデータが含まれており、これらすべてのテーブル/列の照合順序は に設定されていutf8_general_ciます。

今度は、このデータベースを Debian Lenny 上にある疑似実稼働環境に移行する時が来ました。ここでの MySQL のバージョンは 5.0.51a です。

私は次のことを試しました:

  1. Windowsのphpmyadminからのデータを含むデータベースをエクスポートし、.sqlファイルをUTF8で保存しました。
  2. 次に、WinSCP (デフォルトとバイナリ転送設定の両方) を介して Linux マシンに転送しました。
  3. コマンドラインからデータベースを作成しました:mysqladmin -u root -p create nbs
  4. 最後に、テーブルを作成してデータを入力しようとしました。

    mysql -u root -p --default-character-set=utf8 nbs < NBS_utf8_1.sql

ただし、これは次のようなエラーが発生する場所です。

1 行目の ERROR 1064 (42000): SQL 構文にエラーがあります。1 行目の ' CREATE TABLE IF NOT EXISTS `history_members` ( `id`int(11) NOT NULL AUTO_' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

エンコーディングで何かが台無しになっていると思います...しかし、その方法と場所がわかりません。テキスト転送のバイナリモードは、改行 CRLF を LF に変更するだけであるという SO の同様の質問を読んだと思います (これが正しいかどうかはわかりません...)。ここで何が欠けていますか?

ありがとう。

4

2 に答える 2

6

この特定のケースでは、問題は次の変更で解決されました。

1) ターゲット データベースを作成する際の初期照合を に設定しutf8_general_ci
2) WinSCP を介してテキスト モードでファイルを転送し、 3) SQL ダンプの先頭
に追加しました。SET NAMES 'utf8' COLLATE 'utf8_general_ci';

于 2012-09-18T16:13:54.263 に答える
0

リモートシェルを使用した大まかなSQLインポートにPhpMyAdminを使用して見つけたものは次のとおりです。

 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
 /*!40101 SET NAMES utf8mb4 */;
于 2016-04-23T23:18:13.780 に答える