C#MYSQL-重复密钥更新-相同查询不同结果
在我的测试应用程序中;当我反复运行此查询时,即使没有任何更改,结果也是行数为正C#MYSQL-重复密钥更新-相同查询不同结果,c#,mysql,C#,Mysql,在我的测试应用程序中;当我反复运行此查询时,即使没有任何更改,结果也是行数为正 insert into test (k,v) values ('testkey',123) on duplicate key update v=values(v); 查询在MySQL控制台和MySQL工作台中按预期工作。第一次插入得到1,连续调用得到0 然而,当我在我的C#test应用程序中尝试时,我总是得到2,即使行内没有任何变化 有什么想法吗?设置连接时我是否遗漏了什么 这是我的测试表: CREATE TA
insert into test (k,v) values ('testkey',123)
on duplicate key update v=values(v);
查询在MySQL控制台和MySQL工作台中按预期工作。第一次插入得到1,连续调用得到0
然而,当我在我的C#test应用程序中尝试时,我总是得到2,即使行内没有任何变化
有什么想法吗?设置连接时我是否遗漏了什么
这是我的测试表:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`k` varchar(45) DEFAULT NULL,
`v` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `icol_UNIQUE` (`k`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
这是我的小测试代码:
using (var con = new MySqlConnection("Database=mydb;Data Source=localhost;User Id=root;Password=mypass;CharSet=utf8;"))
{
con.Open();
var cmd = new MySqlCommand("insert into test (k,v) values ('testkey',123) on duplicate key update v=values(v)", con);
var rows = cmd.ExecuteNonQuery();
Console.WriteLine(rows); // rows is always 2
}
注:
- 我使用的是MySql.Net Connector 6.9.8
- 所有数据库字符集/排序规则 设置为utf8
Use Affected Rows=true
在文档中,它指出“(对于InnoDB表,a是一个自动增量列。对于一个自动增量列,INSERT语句会增加自动增量值,但UPDATE不会。)”因此这可能是相关的@AndyNichols我的问题不是关于自动增量id。问题是在没有更改的情况下返回的受影响行的数量。问题是特定于应用程序的。一年后,它在控制台中工作没有问题。我还有同样的问题使用.Net连接器运行“在重复密钥更新时”查询时,即使行没有更改,也始终返回正整数。-然而,同一个查询在MySQL控制台和MySQL工作台中的工作原理与预期相同,在没有更改时返回“0行受影响”,这在我看来似乎是一个bug。有什么想法吗?