Итак, в процессе создания наших таблиц мы не уделяли достаточно пристального внимания нашей системе, и все таблицы были созданы с помощью двигателя InnoDB
. Это действительно плохо, потому что мы хотим иметь индекс FULLTEXT
на нескольких столбцах.MySQL сменил двигатель на таблицы с внешними ключами
Итак, теперь я хочу конвертировать. И пока я нахожусь в этом, я просто хочу преобразовать все таблицы в MyISAM
, чтобы, если мы когда-либо добавляем столбцы в будущем, которые хотим индексировать, у нас есть эта опция. Таким образом, я получил мой .sql файл следующим образом:
ALTER TABLE tableName1 Engine = MyISAM;
ALTER TABLE tableName2 Engine = MyISAM;
Однако, когда я пытаюсь запустить его, я получаю следующее сообщение об ошибке:
Error Code: 1217 Cannot delete or update a parent row: a foreign key constraint fails
Как вы уже догадались, мы имеем внешние ключи в наших таблицах. Не мой стиль, но также не мой отдел, ни мой сценарий создания.
Мой вопрос сводится к тому, что я могу изменить двигатель на этих таблицах без необходимости вытирать БД?
Редактировать: Обратите внимание, что это нужно сделать для нескольких тестовых и тестовых копий базы данных, поэтому я могу использовать сценарий, который определенно будет предпочтительнее.
Вы можете удалить FKs без взлома приложения? Или просто реализовать что-то лучше, например, Solr для полнотекстового индексирования? – ceejayoz
@ceejayoz Удаление FK - это вариант, но не совсем то, что мне хотелось бы, так как у нас много таблиц. Мне пришлось бы пройти через каждую таблицу, найти внешние ключи и удалить их вручную. И это будет через несколько тестовых серверов. Я бы хотел сделать это, не делая этого. Кроме того, Solr на самом деле не вариант. – Ktash
Если вы ищете простое решение без работы, я думаю, вы будете разочарованы. – ceejayoz