3

注:実際には2つの質問...

バイナリを使用して mysql データベースをダンプすると、mysqldump(他の行の中で) これを含むファイルを取得します: CREATE DATABASE /*!32312 IF NOT EXISTS*/MyDatabase/*!40100 DEFAULT CHARACTER SET utf8 */;

Google と MySql のリファレンスを検索しましたが、/*!32312 の意味とその仕組みがわかりません。条件付きコメントだとしか思えません。たとえば、ビルド > 32312 の場合、「IF NOT EXIST」を実行しますか?

誰でもこれに光を当てることができますか?

これを知りたい理由は、ダンプの内容を C# クライアントで 1 つのクエリとして使用して復元を実行できなかったからです。このコードの使用:

            MySqlConnection msc = default(MySqlConnection);
            MySqlCommand cmd = default(MySqlCommand);
            MySqlTransaction mst = default(MySqlTransaction);
            try
            {
                //Create a connection to the database
                msc = new MySqlConnection(ConnectionString);
                msc.Open();

                //Creata a MySql Transaction
                mst = msc.BeginTransaction();

                cmd = msc.CreateCommand();
                cmd.Transaction = mst;
                cmd.CommandText = ContentsOfMySqlDumpSql;

                cmd.ExecuteNonQuery();

                mst.Commit();
            }

ダンプを復元するには、コマンドライン引数を使用して mysql をプロセスとして起動する必要がありますか? mysqlバイナリの出力や終了コードなどを制御するよりも便利なので、C#クライアントでSQLクエリとして使用してダンプの復元を実現したいので...

4

2 に答える 2

6

コメント構文で説明されているように、これらは実際にはバージョン固有のコメントです。

これらのコメントは、サーバーがサポートしている場合にのみ、ステートメントのオプション部分を実行できます。

/*!40100 DEFAULT CHARACTER SET utf8 */;

MySQL サーバーのバージョンが 4.01.00 以降の場合にのみ、この部分が実行されることを意味します。

于 2013-04-04T11:09:07.667 に答える