SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.01.2012 14:25:40

vaspet
Завсегдатай
Зарегистрирован: 11.03.2009
Сообщений: 83

TRUNCATE InnoDB в MySQL 5.5+

Вызывает теперь ошибку? Надо менять через DELETE FROM .. либо DROP TABLE .. CREATE TABLE... ?

Не нашел информации на русском.

Неактивен

 

#2 12.01.2012 15:42:57

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: TRUNCATE InnoDB в MySQL 5.5+

Думаю, у вас есть внешний ключ, ссылающийся на эту таблицу. В MySQL 5.1 в этом случае TRUNCATE работал как последовательное удаление (с выполнением при необходимости каскадного удаления или SET NULL). В MySQL 5.5 поведение изменено на выдачу ошибки. Теперь, если есть указывающий на таблицу внешний ключ, то нужно заменить на DELETE;

http://dev.mysql.com/doc/refman/5.1/en/ … table.html
http://dev.mysql.com/doc/refman/5.5/en/ … table.html

Неактивен

 

#3 12.01.2012 16:09:41

vaspet
Завсегдатай
Зарегистрирован: 11.03.2009
Сообщений: 83

Re: TRUNCATE InnoDB в MySQL 5.5+

Супер.
А если нет внешних ключей, то ошибки не возникнут?

Неактивен

 

#4 12.01.2012 18:13:58

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: TRUNCATE InnoDB в MySQL 5.5+

Без внешних ключей TRUNCATE должен сработать как обычно. Изменение в 5.1 сделано, чтобы избавиться от скрытого поведения - никто не ожидал от TRUNCATE каскадного изменения других таблиц.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson