我在自定义操作中运行脚本时遇到问题。该脚本在 localhost MySQL 服务器中创建和设置数据库。
具体来说,我的一个程序有问题:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateAutoInc`(IN `increment` BIGINT)
BEGIN
SET @s = concat('ALTER TABLE tblactionservices AUTO_INCREMENT ',increment);
PREPARE stmt FROM @s;
EXECUTE stmt;
SET @s = concat('ALTER TABLE tblbannedclient AUTO_INCREMENT ',increment);
PREPARE stmt FROM @s;
EXECUTE stmt;
END$$
DELIMITER ;
在脚本中,在此过程之前,我还有另外 2 个可以完美运行的过程。
安装应用程序时出现的错误是“必须定义参数'@s'”。寻找互联网我找到了这个博客,但我添加了“允许用户变量=真;” 没有运气。有了这段文字,脚本直接在第一个过程中崩溃。事实上,它总是崩溃,无论它找到什么(程序,表格......)。我得到的错误是绝对没用的“你的 SQL 语法有错误;检查手册 bla bla”,所以我找不到问题。
这是我用来从 c# 运行脚本的类:
private void ExecuteSql(string DatabaseName, string Sql)
{
MySqlConnection connection = new MySqlConnection { ConnectionString = "server=127.0.0.1;User Id=root" };
MySqlCommand command = new MySqlCommand(Sql, connection);
command.Connection.Close();
command.Connection.Open();
try
{
command.ExecuteNonQuery();
}
finally
{
// Closing the connection should be done in a Finally block
command.Connection.Close();
}
}
该脚本不是手动输入的,而是从 PhPMyAdmin 自动生成的。MySQL服务器版本为5.5,连接器版本为6.5.5.0