我正在使用 MySqlBackup.dll (MySqlBackup.NET),而后者又使用 MySql.Data.dll 转储数据库。我认为 MySqlBackup.NET 导致了这种行为,所以我把它排除在外。如果我在我的解决方案中运行此代码:
Dim cmd = New MySqlCommand()
cmd.Connection = New MySqlConnection(connectionString)
cmd.Connection.Open()
Dim result = QueryExpress.ExecuteScalarStr(cmd, "SHOW CREATE TABLE `airportcodes`;", 1)
cmd.Connection.Close()
我明白了
CREATE TABLE "airportcodes" (
"AirportCodeId" int(11) NOT NULL AUTO_INCREMENT,
"Code" varchar(4) CHARACTER SET utf8 NOT NULL,
"AirportName" varchar(100) CHARACTER SET utf8 DEFAULT NULL,
"Website" varchar(100) CHARACTER SET utf8 DEFAULT NULL,
"LastUpdate" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY ("AirportCodeId")
)
我不能用它来恢复,因为它使用双引号。当我同时使用上面的代码和 MySqlBackup.NET 时,就会发生这种情况。如果我使用随其源代码提供的 MySqlBackup.NET 测试应用程序,结果是正确的(使用反引号而不是双引号)。
如果我在 mysql CLI 中执行此查询,我也会得到正确的版本(带有反引号)。我一直在使用相同的连接字符串。
创建转储后搜索和替换感觉很愚蠢。这可能是什么原因?