MySQL (ADO. NET) Ошибка «Нет выбранной базы данных», когда база данных действительно выбрана. - PullRequest
1 голос
/ 12 марта 2020

Используя 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): база данных не выбрана

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...