将 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 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
) REFERENCEStable1
(id
);
最后的命令导致错误:
错误 1046 (3D000): 未选择数据库