Невозможно усечь таблицу mysql - PullRequest
0 голосов
/ 30 ноября 2018

В моей схеме несколько таблиц, у меня проблема с усечением.Моя структура:

country
->PK countryId
->name

city
->PK cityId
->FK countryId
->name

address
->PK addressId
->FK cityId

customer
->PK customerId
->FK addressId

appointment
->PK appointmentId
->FK customerId

Сейчас я не тот, кто создал эту таблицу, она была мне предоставлена, и при этом я не являюсь специалистом по SQL, вряд ли новичком на самом деле, но мне нужно бытьЯ могу усечь данные, как для тестового приложения, и я смоделировал данные, которые мне больше не нужны.

Это ошибка, которую я получаю:

TRUNCATE TABLE country  Error Code: 1701. Cannot truncate a table referenced in a foreign key constraint (`U05FKQ`.`city`, CONSTRAINT `city_ibfk_1` FOREIGN KEY (`countryId`) REFERENCES `U05FKQ`.`country` (`countryId`))  0.547 sec

Я также попыталсязапустите это:

TRUNCATE TABLE appointment;
TRUNCATE TABLE customer;
TRUNCATE TABLE address;
TRUNCATE TABLE city;
TRUNCATE TABLE country;

, который успешно выполняется при усечении назначения, но не выполняется у клиента и не продолжается.

Еще одна большая проблема, которую я заметил при выполнении отдельных удалений данных из моего приложения, заключается в том, что автоматически увеличивающиеся идентификаторы не корректируются.Кроме того, при удалении всей таблицы, полной данных, т.е. если я удаляю полную таблицу из 3 записей, даже если после добавления в таблицу остается только одна запись, в ней все равно отображается 4 для идентификатора, есть ли исправление для этого?

У меня нет доступа к исходному сценарию создания БД.

1 Ответ

0 голосов
/ 30 ноября 2018

Очень небезопасное решение для данных:

SET FOREIGN_KEY_CHECKS=0;

Затем установите его обратно:

SET FOREIGN_KEY_CHECKS=1;
...