Более 3000 транзакций в CakePHP. Как? - PullRequest
0 голосов
/ 20 сентября 2010

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

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

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

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

Есть идеи?

1 Ответ

0 голосов
/ 22 сентября 2010

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

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

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

...