Есть консольное приложение, запускаемое по CRON'у для вбивания в табличку mySQL кучу строк
В табличке есть уникальное первичное поле - допустим под названием ID
Так как mySQL-таблица большая ради "экономии" запросов принято решение не делать SELECT-поиск с целью проверки существования уже имеющегоcя ID в таблице - т.е. INSERT'ы построенные через AR летят в таблицу даже если пытаются воткнуть в уникального ключевое поле уже существующее в таблице значение. Естественно работа консольного приложения в таком случае останавливается, есть возможность как-то отключить это дело? т.е. чтобы INSERT'ы бесшумно пытались добавить данные - если с уже имеющимся ID - то тихо пропускается и продолжается далее..
Отключить ошибки INSERT-запросов к БД сделанных через AR
Re: Отключить ошибки INSERT-запросов к БД сделанных через AR
Я так понимаю, проблема в том, что выкидывается исключение? Тогда можно просто обернуть запрос в try...catch. Ещё в MySQL есть операторы REPLACE, INSERT ... ON DUPLICATE KEY UPDATE и INSERT IGNORE.
Re: Отключить ошибки INSERT-запросов к БД сделанных через AR
да спасибо, про try catch забыл...
про INSERT IGNORE - не думал ибо через AR все красиво написано не хотелось бы менять
про INSERT IGNORE - не думал ибо через AR все красиво написано не хотелось бы менять
Re: Отключить ошибки INSERT-запросов к БД сделанных через AR
Ну если вбивается действительно большая куча строк, то ActiveRecord - не самое эффективное решение.
Re: Отключить ошибки INSERT-запросов к БД сделанных через AR
т.е. ошибка возникает при auto_increment на первичном id ? зачем вообще проверять через SELECT идентификатор ? или я что-то не понял ?
RTFM !
Re: Отключить ошибки INSERT-запросов к БД сделанных через AR
т.е. ошибка возникает при auto_increment -
не AUTO_INCREMENT'а нет у ключевого поля.
Просто идет вбивание в таблицу строк без как раз таки проверки на существования в поле ID.
Потому если происходит попытка INSERT'ить уже имеющееся ID - а так как оно уникальное поле - вылетает ошибка и остальные запросы валятся. А так как поля и значения у меня из массива собираются, AR очень помогает, потому юзать INSERT IGNORE и писать запрос ручками не хочется, отсюда и подсказанный выход в виде применения try...catch
не AUTO_INCREMENT'а нет у ключевого поля.
Просто идет вбивание в таблицу строк без как раз таки проверки на существования в поле ID.
Потому если происходит попытка INSERT'ить уже имеющееся ID - а так как оно уникальное поле - вылетает ошибка и остальные запросы валятся. А так как поля и значения у меня из массива собираются, AR очень помогает, потому юзать INSERT IGNORE и писать запрос ручками не хочется, отсюда и подсказанный выход в виде применения try...catch