Отключить ошибки INSERT-запросов к БД сделанных через AR

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
enshtein
Сообщения: 65
Зарегистрирован: 2012.02.20, 19:02

Отключить ошибки INSERT-запросов к БД сделанных через AR

Сообщение enshtein »

Есть консольное приложение, запускаемое по CRON'у для вбивания в табличку mySQL кучу строк
В табличке есть уникальное первичное поле - допустим под названием ID
Так как mySQL-таблица большая ради "экономии" запросов принято решение не делать SELECT-поиск с целью проверки существования уже имеющегоcя ID в таблице - т.е. INSERT'ы построенные через AR летят в таблицу даже если пытаются воткнуть в уникального ключевое поле уже существующее в таблице значение. Естественно работа консольного приложения в таком случае останавливается, есть возможность как-то отключить это дело? т.е. чтобы INSERT'ы бесшумно пытались добавить данные - если с уже имеющимся ID - то тихо пропускается и продолжается далее..
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: Отключить ошибки INSERT-запросов к БД сделанных через AR

Сообщение andy_s »

Я так понимаю, проблема в том, что выкидывается исключение? Тогда можно просто обернуть запрос в try...catch. Ещё в MySQL есть операторы REPLACE, INSERT ... ON DUPLICATE KEY UPDATE и INSERT IGNORE.
enshtein
Сообщения: 65
Зарегистрирован: 2012.02.20, 19:02

Re: Отключить ошибки INSERT-запросов к БД сделанных через AR

Сообщение enshtein »

да спасибо, про try catch забыл...
про INSERT IGNORE - не думал ибо через AR все красиво написано не хотелось бы менять
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: Отключить ошибки INSERT-запросов к БД сделанных через AR

Сообщение andy_s »

Ну если вбивается действительно большая куча строк, то ActiveRecord - не самое эффективное решение.
Аватара пользователя
because
Сообщения: 689
Зарегистрирован: 2010.09.30, 22:01

Re: Отключить ошибки INSERT-запросов к БД сделанных через AR

Сообщение because »

т.е. ошибка возникает при auto_increment на первичном id ? зачем вообще проверять через SELECT идентификатор ? или я что-то не понял ?
RTFM !
enshtein
Сообщения: 65
Зарегистрирован: 2012.02.20, 19:02

Re: Отключить ошибки INSERT-запросов к БД сделанных через AR

Сообщение enshtein »

т.е. ошибка возникает при auto_increment -
не AUTO_INCREMENT'а нет у ключевого поля.
Просто идет вбивание в таблицу строк без как раз таки проверки на существования в поле ID.
Потому если происходит попытка INSERT'ить уже имеющееся ID - а так как оно уникальное поле - вылетает ошибка и остальные запросы валятся. А так как поля и значения у меня из массива собираются, AR очень помогает, потому юзать INSERT IGNORE и писать запрос ручками не хочется, отсюда и подсказанный выход в виде применения try...catch
Ответить