Используя ADO. NET с драйвером MySql Connector (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): база данных не выбрана
Однако при той же настройке, если я запускаю запрос ALTER TABLE с помощью инструмента командной строки mysql (и нескольких других клиентов MySQL), я не получаю такая ошибка.
У кого-нибудь есть предложения по поводу того, на что я могу посмотреть. В настоящее время я думаю, что это проблема с драйвером MySql Connector (MySql .Data), однако я могу легко ошибиться здесь.
Обновление:
Мы не можем воспроизвести это с минимально жизнеспособным воспроизведением. Вероятно, проблема заключается где-то в нашем собственном коде, а не в драйвере.
Еще одно обновление: На самом деле мы смогли успешно воспроизвести это, используя только инструмент командной строки mysql , Требуется Mysql 5.6.34 (не воспроизводится во многих других версиях, которые я тестировал, включая 5.6.41). Кроме того, мы воспроизвели в AWS RDS, но не уверены, требуется ли это. Для воспроизведения выполните следующие шаги:
1) Fre sh установка базы данных 2) вход через mysql инструмент командной строки 3) создать две таблицы
создать схему public ; создать таблицу publi c .table1 (id int первичный ключ); создать таблицу publi c .table2 (первичный ключ id int, table1_id int); изменить таблицу public
. table2
добавить внешний ключ fk_name
(table1_id
) ССЫЛКИ table1
(id
);
Последняя команда приводит к ошибке:
ОШИБКА 1046 (3D000): база данных не выбрана