如何在.NET MySqlCommand中使用MySql用户定义变量?

ber*_*d_k 19 .net mysql powershell

我只想执行以下Mysql语句

SET @a = 1;SELECT @a;
Run Code Online (Sandbox Code Playgroud)

使用MySql.Data.MySqlClient

[System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")

$password = 'mypassword'

$sql = "SET @a = 1;SELECT @a;"

$server = 'localhost'
$port = 3306
$database = 'test'
$User = 'root'


$conn=new-object MySql.Data.MySqlClient.MySqlConnection
$connectionstring =  "Server=$Server;Port=$port;Database=$DataBase;Uid=$User;Pwd=$Password;allow zero datetime=yes"
$conn.ConnectionString = $connectionstring 
$conn.Open() 

$cmd=new-object MySql.Data.MySqlClient.MySqlCommand($sql,$conn)
$ds=New-Object system.Data.DataSet
$da=New-Object MySql.Data.MySqlClient.MySqlDataAdapter($cmd)
$da.fill($ds) 
$conn.close()
$ds.tables[0]
Run Code Online (Sandbox Code Playgroud)

我得到一个致命的错误.

当我用任何一个替换$ sql时

$sql = "SELECT DATABASE();"
Run Code Online (Sandbox Code Playgroud)

要么

$sql = "SELECT 1;"
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果.

我发现了这个问题,但它并没有解决我的问题.

我正在尝试将SQLIse(SQLPSX项目的一部分)移植到MySQL版MySQLIse.

我想处理任何简单有效的mysql语句.

编辑:

我试图运行sakila-schema.sql的部分mysql演示数据库安装脚本,运行类似的东西

mysql> SOURCE C:/temp/sakila-db/sakila-schema.sql;

ber*_*d_k 46

我在这个bolg中找到了解决方案

我必须补充一下

;Allow User Variables=True
Run Code Online (Sandbox Code Playgroud)

到连接字符串

$connectionstring =  "Server=$Server;Port=$port;Database=$DataBase;Uid=$User;Pwd=$Password;allow zero datetime=yes;Allow User Variables=True"
Run Code Online (Sandbox Code Playgroud)

作品.我用6.3.6.0版测试了它.MySql.Data.