Получение ошибок MySQL при обращении к существующей таблице

#mysql #macos

#mysql #macos

Вопрос:

Я пытаюсь создать несколько очень простых таблиц, одна из которых имеет отношение FK к другой. Но MySQL не распознает правильно созданную таблицу, которая существует. Я нахожусь на macOS 10.14 и использовал DMG для MySQLWorkbench и MySQL Community Server версии 8

Уже предпринятые шаги: -Остановить / перезапустить MySQL через MySQLWorkbench -Остановить / перезапустить MySQL через системные настройки macOS -Удалить таблицы -Удалить DB -Запустить mysqlcheck -четырехкратная проверка всех вариантов написания / регистров -перенастроить структуры запросов для пошагового выполнения

 /* Creating the building_t table */

CREATE TABLE building_t (
  buildingkey VARCHAR(10), 
  buildingname VARCHAR(50), 
  buildingaddress VARCHAR(150), 
  buildingcity VARCHAR(50), 
  buildingstate VARCHAR(2), 
  buildingzipcode INT, 
  buildingmanagerphone INT, 
  PRIMARY KEY (buildingkey)
  );
  

Результат:

16:43:17 СОЗДАЙТЕ ТАБЛИЦУ building_t (buildingkey VARCHAR(10),
buildingname VARCHAR(50), buildingaddress VARCHAR(150),
buildingcity VARCHAR(50), buildingstate VARCHAR(2),
buildingzipcode INT, buildingmanagerphone INT, PRIMARY KEY (buildingkey) ) 0 строк, затронутых на 0,0083 сек.

СЛЕДУЮЩИЙ ШАГ:

 /* Creating the apartment_t table */
CREATE TABLE apartment_t (
  apartmentkey VARCHAR(10), 
  apartmentrooms VARCHAR(50), 
  buildingkey VARCHAR(10), 
  PRIMARY KEY (apartmentkey),
  FOREIGN KEY (buildingkey) REFERENCES building_t(buildingkey)
  );
  

Результат:

16:45:44 СОЗДАЙТЕ ТАБЛИЦУ apartment_t (apartmentkey VARCHAR(10),
VARCHAR комнат апартаментов(50), buildingkey VARCHAR(10), ПЕРВИЧНЫЙ КЛЮЧ (apartmentkey), ВНЕШНИЙ КЛЮЧ (buildingkey) ССЫЛАЕТСЯ на building_t(buildingkey) ) Код ошибки: 1824. Не удалось открыть таблицу, на которую ссылается building_t, 0.00069 сек.

СЛЕДУЮЩИЙ ШАГ:

 /* Change the apartment_t create statement to remove FK */
CREATE TABLE apartment_t (
  apartmentkey VARCHAR(10), 
  apartmentrooms VARCHAR(50), 
  buildingkey VARCHAR(10), 
  PRIMARY KEY (apartmentkey)
  );
  

Результат:

16:47:13 СОЗДАНИЕ ТАБЛИЦЫ apartment_t (переменный ключ apartmentkey(10),
переменный ключ apartmentrooms(50), переменный ключ buildingkey(10), ПЕРВИЧНЫЙ КЛЮЧ (apartmentkey)) 0 строк затронуто на 0,0077 сек.

СЛЕДУЮЩИЙ ШАГ:

 /*alter the apartment_t table to add the FK after the fact */
alter table apartment_t ADD FOREIGN KEY (buildingkey) REFERENCES building_t(buildingkey)
  

Результат:

16:48:09 изменить таблицу apartment_t, ДОБАВИТЬ ВНЕШНИЙ КЛЮЧ (buildingkey), ССЫЛКИ building_t(buildingkey) Код ошибки: 1146. Таблица ‘wildwood.apartment_t’ не существует 0.0011 сек

Ни одна из этих проблем не должна возникать, поскольку все форматирование правильное. Обратите внимание, что когда я пытаюсь сослаться в инструкции CREATE TABLE, ошибка «не удалось открыть …», но в инструкции ALTER TABLE говорится, что таблица, которую нужно изменить, не существует.

Комментарии:

1. Так в чем проблема??? Я не вижу никаких ошибок.

2. @eric Они там «Код ошибки: 1824. Например, не удалось открыть таблицу, на которую ссылается building_t»

3. Я не могу воспроизвести вашу проблему в этой скрипте MySQL 5.7 db

4. @Eric проверьте разделы, заключенные в кавычки. Я обновил форматирование, чтобы выделить их

5. Вы же не выполняете разные инструкции в разных транзакциях, не так ли? Чтобы быть уверенным, что произойдет, если вы выдадите COMMIT после каждого оператора?