Более 3000 транзакций в CakePHP. Как?

0

Мы делаем импорт Magento-продуктов в среду CakePHP поверх SOAP. У нас есть 3,000 продуктов, и, конечно же, мы хотим, чтобы база данных не очищалась от повторяющихся записей.

Мы используем InnoDB как продукт-базу данных в CakePHP.

У нас были разные подходы:

  • Мы устанавливаем валидацию var в модель продукта и хотим, чтобы идентификатор продукта был уникальным. Проблема: транзакции ограничены круговым развязкой 2.000. Поскольку для единственного правила для проверки требуются SELECT-операторы для каждого продукта, ничего не происходит, потому что транзакции "потребляются".
  • Установить идентификатор продукта уникальным в самой базе данных. Кажется хорошо, только проблема в том, что после первого импорта он всегда выбрасывает "повторяющуюся запись" - предупреждение (это правильно) и не продолжается. Я не нашел способа использовать "игнорировать" в этом запросе.

Любые идеи?

Теги:
cakephp
transactions
innodb

1 ответ

0
Лучший ответ

Поскольку проблема связана с SQL и она является импортом, я буду строить запросы вручную. Возможно, напишите файл в каталоге tmp/. Все эти вставки могут составлять 1 транзакцию. Таким образом вы можете добавить игнорирование дублирующего ключа к запросам.

По самой своей природе CakePHP запускает множество запросов, и поскольку вы ограничены транзакциями, я бы не пошел с тортом.

Конечно, вы можете выкопать пирог немного глубже и выяснить, как работает его класс innodb, и посмотреть, есть ли способ обернуть запросы в транзакцию.

  • 0
    Так что, нет решения для "Cake-way"?
  • 0
    Кажется, нет никакого способа сделать это по-другому. Итак, спасибо за ваш ответ, я приму его, поскольку, похоже, нет лучшего способа сделать это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню