我在C#app中使用PetaPoco.Core 4.0.3来访问MySql数据库。
我正在尝试创建一个使用变量的查询,但我不希望它们被PetaPoco视为输入参数。这是一个无用的查询,只是为了表明我的意思:
SET @num := 0;
SELECT
@num := @num + 1 AS row_number
FROM
buzz
LIMIT 100;
当我这样做时,PetaPoco将@num识别为输入参数,并收到以下错误:
指定了参数'@num',但没有传递的参数具有此>名称的属性(在'SET @num:= 0; SELECT @num;')
我也试图通过加倍来逃避@角色
SET @@num := 0;
SELECT
@@num := @@num + 1 AS row_number
FROM
buzz
LIMIT 100;
但接着我
必须定义参数'@num'。
有没有一种方法可以在查询中声明和使用变量,而PetaPoco不会将它们识别为输入参数?
提前致谢
圣保罗
答案 0 :(得分:3)
我找到了解决方案。问题出在.NET连接器设置中(参见http://blog.tjitjing.com/index.php/2009/05/mysqldatamysqlclientmysqlexception-parameter-id-must-be-defined.html)
我必须通过添加属性“允许用户变量”并将其设置为true来更改我的连接字符串。
Database = db; Data Source = localhost; User Id = root; Password = pass; Allow User Variables = True
之后,我的查询的第二个版本(@@ variable)开始工作。