C# MySQL(ADO.NET)提供';未选择任何数据库';确实选择了数据库时出错
使用ADO.NET和MySql连接器(MySql.Data)驱动程序,我打开了一个新的非池查询(连接字符串中没有指定初始目录/数据库),并发出以下查询:C# MySQL(ADO.NET)提供';未选择任何数据库';确实选择了数据库时出错,c#,mysql,ado.net,mysql.data,C#,Mysql,Ado.net,Mysql.data,使用ADO.NET和MySql连接器(MySql.Data)驱动程序,我打开了一个新的非池查询(连接字符串中没有指定初始目录/数据库),并发出以下查询: ALTER TABLE `public`.`table2` ADD CONSTRAINT `fk_table2_table1` FOREIGN KEY (`table1_id`) REFERENCES `table1` (`id`); 两个表的结构如下: CREATE TABLE `public`.`table1` ( id int
ALTER TABLE `public`.`table2`
ADD CONSTRAINT `fk_table2_table1`
FOREIGN KEY (`table1_id`) REFERENCES `table1` (`id`);
两个表的结构如下:
CREATE TABLE `public`.`table1`
(
id int primary key
);
CREATE TABLE `public`.`table2`
(
id int primary key,
table1_id int
);
ALTER TABLE查询导致以下异常:
MySql.Data.MySqlClient.MySqlException(0x80004005):未选择任何数据库
但是,使用相同的设置,如果使用mysql命令行工具(和其他几个mysql客户机)运行ALTER TABLE查询,则不会出现此类错误
有人对我可以研究的事情有什么建议吗。我目前认为这是MySql连接器(MySql.Data)驱动程序的一个问题,然而,我在这里很容易出错
更新:
我们无法用一个最低限度可行的复制品来复制这一点。问题很可能存在于我们自己的代码中,而不是驱动程序中
另一个更新:
事实上,我们仅使用mysql命令行工具就可以成功地重现这一点。它需要Mysql 5.6.34(在我测试的许多其他版本中,包括5.6.41,都不会重新编程)。此外,我们复制了AWS RDS,但不确定是否需要。要复制,请执行以下步骤:
1) 新数据库安装
2) 通过mysql命令行工具登录
3) 创建两个表
创建公共模式;
创建表public.table1(id int主键);
创建表public.table2(id int主键,table1_id int);
更改表public
table2
添加外键fk_name
(table1_id
)参考table1
(id
)
最后一个命令导致错误:
错误1046(3D000):未选择任何数据库请先检查连接字符串,但您尚未显示连接字符串,我们怎么能告诉您使用了此代码?如果这样做有效的话,几乎可以肯定这是Oracle的MySQL连接器/NET(即MySQL.Data)中的一个bug。您可以在上报告。我无法使用您提供的SQL语句再现MySql.Data的任何异常;你能提供更具体的代码来说明这个问题吗?请提供一个。首先检查你的连接字符串,但是你还没有显示你的连接字符串,我们怎么能告诉你用了这个代码?如果这样做有效的话,几乎可以肯定这是Oracle的MySQL连接器/NET(即MySQL.Data)中的一个bug。您可以在上报告。我无法使用您提供的SQL语句再现MySql.Data的任何异常;你能提供更具体的代码来说明这个问题吗?请提供一个。