Это не относится к CodeIgniter.
Это ограничение MySQL.Вместо этого используйте оператор DELETE
(при условии, что ни строки внешнего ключа не ссылаются на строки в таблице, из которой мы удаляем строки, либо определены ограничения внешнего ключа ON DELETE CASCADE
или ON DELETE SET NULL
.
DELETE FROM `areas`;
Если мы хотим использовать TRUNCATE
, нам нужно будет отключить ограничения внешнего ключа. Либо удалите ключевые ограничения, которые ссылаются на таблицу, затем выполните TRUNCATE
для таблицы и воссоздайте ограничение внешнего ключа.).
ALTER TABLE `myproject`.`area_pref_relations`
DROP FOREIGN KEY `area_pref_relations_ibfk_1` ;
TRUNCATE TABLE `areas` ;
ALTER TABLE `myproject`.`area_pref_relations`
ADD CONSTRAINT `area_pref_relations_ibfk_1`
FOREIGN KEY (`area_id`) REFERENCES `myproject`.`areas` (`id`))
ON UPDATE CASCADE ON DELETE CASCADE ;
Или, если мы знаем, что в таблице, которую мы усекаем, нет строк внешнего ключа, ссылающихся на строки, может быть возможно отключить проверку внешнего ключа для сеанса, выполнитеTRUNCATE, а затем снова включите внешние ключи.
SET foreign_key_checks = 0 ;
TRUNCATE TABLE my_referenced_table;
SET foreign_key_checks = 1 ;