2010-09-20 2 views
0

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

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

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

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

Любые идеи?

ответ

0

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

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

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

+0

Итак, нет решения для «торта»? – Tim

+0

Кажется, нет способа сделать это по-другому. Итак, спасибо за ваш ответ, я соглашусь с ним, поскольку кажется, что нет лучшего способа сделать это. – Tim

Смежные вопросы