我需要运行如下脚本:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
DROP TABLE IF EXISTS `CourseArchiveHistory` ;
CREATE TABLE IF NOT EXISTS `CourseArchiveHistory` (
`Id` INT(11) NOT NULL AUTO_INCREMENT ,
`ArchiveDate` DATETIME NULL DEFAULT NULL ,
`CourseId` INT(11) NULL DEFAULT NULL ,
`DepartmentGroupId` INT(11) NULL DEFAULT NULL ,
.....
等等。现在我正在使用MySqlCommand,并将CommandText设置为我正在尝试运行的脚本。
失败了Parameter '@OLD_UNIQUE_CHECKS' must be defined.
关于如何使这项工作的任何想法?
感谢。
修改
脚本在mysql工作台中运行没有问题
编辑2
C#代码:
var con = new MySqlConnection("");
var text = File.ReadAllText("script.sql");
con.Open();
var cmd = con.CreateCommand();
cmd.CommandText = text;
cmd.ExecuteNonQuery();
con.Close();
*不是生产代码。
答案 0 :(得分:1)
您需要在使用之前声明变量:
DECLARE @OLD_UNIQUE_CHECKS INT
DECLARE @OLD_FOREIGN_KEY_CHECKS INT
DECLARE @OLD_SQL_MODE INT
答案 1 :(得分:0)
我最终调用命令行mysql来运行脚本。
答案 2 :(得分:0)
将Allow User Variables=True
添加到您的ConnectionString
。
示例:
Database=testdb;
Data Source=localhost;
User Id=root;
Password=hello;
Allow User Variables=True;