注意:实际上有两个问题...
当我使用mysqldump
二进制文件来转储mysql数据库时,我得到一个包含以下内容(以及其他内容)的文件:
CREATE DATABASE /*!32312 IF NOT EXISTS*/
MyDatabase/*!40100 DEFAULT CHARACTER SET utf8 */;
我已经在Google和MySql参考手册中搜索过了,但我找不到这些/*!32312的含义以及它们是如何工作的。我只能猜想它们是条件注释。比如说,如果版本号大于32312,则执行"IF NOT EXIST"?
有人能否解释一下这个问题?
我想知道这个原因是因为我正在尝试将这个转储文件作为C#客户端中的一个查询来执行还原操作,但遇到了问题。我正在使用以下代码:
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进程来恢复转储数据?因为我更希望在C#客户端中将其作为SQL查询来完成恢复,这比控制mysql二进制输出和退出代码等更方便...