运行创建数据库表的脚本

时间:2012-01-26 19:53:38

标签: c# mysql

我需要运行如下脚本:

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();

*不是生产代码。

3 个答案:

答案 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;