beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2011-04-14 10:24 pm

Скажите мне, что это неправда

В рассылке по DBIx::Class пишут, что если в MySQL сказать

SET FOREIGN KEYS OFF;

Испортить консистентность данных

и сказать

SET FOREIGN KEYS ON;

То MySQL проглотит молча.
ext_613079: Default userpic (Default)

[identity profile] shaplov.livejournal.com 2011-04-14 08:37 pm (UTC)(link)
Проглотить то проглотит, но боюсь что ее в результате таки стошнит...
ext_613079: Default userpic (Default)

[identity profile] shaplov.livejournal.com 2011-04-14 08:38 pm (UTC)(link)
Да, в жж ссылка с кол-ва dw-комментариев ведет куда-то совсем не туда...

[identity profile] yakov-sirotkin.livejournal.com 2011-04-14 07:21 pm (UTC)(link)
Зато работает быстро!

Думаю, на самом деле это зависит от версии и настроек.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner (from livejournal.com) 2011-04-14 07:25 pm (UTC)(link)
И еще небось от типа таблицы.

[identity profile] beldmit.livejournal.com 2011-04-14 07:28 pm (UTC)(link)
Ну, не при каждом типе вообще есть внешние ключи

[identity profile] alexkuklin.livejournal.com 2011-04-14 08:48 pm (UTC)(link)
(удивленно)
в mysql есть контроль целостности?

:))))

[identity profile] beldmit.livejournal.com 2011-04-15 05:27 am (UTC)(link)
Там есть конструкция FOREIGN KEY. А про контроль целостности я пытаюсь выяснить.

[identity profile] provokatorz.livejournal.com 2011-04-15 04:43 am (UTC)(link)
DBIx::Class - зло.

А сегодня пятница.

[identity profile] beldmit.livejournal.com 2011-04-15 05:28 am (UTC)(link)
По сути заданного вопроса что-нибудь скажете?

(Anonymous) (from livejournal.com) 2011-04-15 06:27 am (UTC)(link)
Это применяется при работе с дампами схемы, чтобы зависимости не мешали пересоздавать таблицы.

[identity profile] beldmit.livejournal.com 2011-04-15 07:24 am (UTC)(link)
Дима, я понимаю, зачем это может быть нужно. Скажи, если внести неконсистентные данные и попытаться включить констрейнт - они включатся молча или выругаются на нарушение внешнего ключа?

(Anonymous) (from livejournal.com) 2011-04-15 07:26 am (UTC)(link)
Учитывая статус mysql, должны молча включиться и если там косяк из-за которого отсутствуют форен-ключи, то Ты сам себе злобный буратино.

[identity profile] beldmit.livejournal.com 2011-04-15 07:27 am (UTC)(link)
При чем тут статус MySQL - я не понял. PostgreSQL такого себе не позволяет, AFAIK.

(Anonymous) (from livejournal.com) 2011-04-15 07:31 am (UTC)(link)
Ну извини :))) Кто Тебе мешает пользоваться постгрёй?

А на счёт отключения ключей всё просто. Сделай дамп с бд с форен-ключами, а потом попробуй этот же дамп БЕЗ ОТКЛЮЧЕНИЯ завсимостей залить в бд.

[identity profile] beldmit.livejournal.com 2011-04-15 07:38 am (UTC)(link)
Эти грабли знаю. В PostgreSQL такой режим все-таки только для заливки из дампа.

(Anonymous) (from livejournal.com) 2011-04-15 07:39 am (UTC)(link)
Если тебе важно каждое движение пользователей, переезжай на постгрю. Если не так уж и важно, то забей.

[identity profile] beldmit.livejournal.com 2011-04-15 08:02 am (UTC)(link)
Мне - важно. Но я с нее и не уезжал.

(Anonymous) (from livejournal.com) 2011-04-15 08:05 am (UTC)(link)
Тогда не жалуйся на mysql :) Ты ведь не жалуешься, что в макдоналдсе не подают свежего тунца специально для Тебя выловленного и поджареного :)

[identity profile] tolikl.livejournal.com 2011-04-15 08:34 am (UTC)(link)
Это правда, т.е. таким образом в мускуле да, можно получить неконсистентные данные.

[identity profile] al-stager.livejournal.com 2011-04-15 08:42 am (UTC)(link)
Насколько я помню, MySQL занимается целостностью данных по остаточному принципу в исключительных случаях.
То есть да, именно так и произойдет, мы когда-то по-моему на такое нарывались.
Точно уже не скажу, много лет прошло и в новых версиях уже может быть масса всего. Но если б я спорил на деньги, то ставил бы на "да".