2013-07-29 4 views
1

Я разрабатываю сайт, который будет проверять fetche на разных известных автосалонах (например, Fordham Toyota, Westchester Toyota, Toyota Manhattan и т. Д.) От крупных обзорных сайтов, таких как CitySeach, Dealer Rater , Insider Pages, Yelp, Yahoo-local, Google+ и т. Д. В основном функциональность этого сайта позволяет владельцам бизнеса контролировать свои онлайн-обзоры на основных сайтах обзора.Невозможно удалить записи из базы данных mysql с помощью codeigniter datamapper

Я использую codeigniter и datamapper (версия 1.8) в этом проекте и сталкиваются с некоторыми проблемами для удаления данных из базы данных mysql.

Вот моя часть структуры таблицы следующим образом:

 +----------+  +----------------+  +--------------+ 
     | Profile |  | profiles_users |  | users  | 
     +----------+  +----------------+  +--------------+ 
     | id  |<---- | id    |----->| id   | 
     | name  |  | profile_id  |  | name   | 
     +----------+  | user_id  |  | email  | 
      |    +----------------+  | password  | 
      |          +--------------+ 
      +--> +--------------+ 
       | reviews  | 
       +--------------+ 
       | id   | 
       | title  | 
       | author  | 
       | review  | 
       | rating  | 
       | date   | 
       | profile_id | 
       +--------------+ 

В таблице «Профиль» Я хранение delar имени (например, как Фордхэмский Toyota, Весчестер Toyota и т.д.) и в таблице «пользователя» Я храню имя владельцев бизнеса. Я использую api для получения обзоров и хранения их в таблице «отзывы» с «идентификатором профиля».

Для каждого профиля может быть более 20000 отзывов. В настоящее время у меня есть avg. 12000 отзывов для каждого профиля.

Всякий раз, когда я собираюсь удалить профиль, обзоры для этого профиля должны быть удалены, но здесь я получаю сообщение об ошибке, как :

«Фатальная ошибка: Разрешены памяти размером 134217728 байт исчерпаны (попытался выделить 20 байт) в /home/business/public_html/system/database/DB_active_rec.php в строке 1999 «

Может кто-нибудь, пожалуйста, предложите мне в этом отношении.

+0

Покажите нам запрос, возможно, мы сможем оптимизировать его! –

+0

Вот мой код: $ profile = new Профиль ($ id); if ($ profile-> result_count()> 0) { foreach ($ profile-> has_many as $ key => $ value) { if ($ key === 'user') continue; $ profile -> {$ key} -> delete_all(); $ profile-> delete ($ profile -> {$ key} -> all); } $ profile-> delete(); } – user2198137

+0

Возможный дубликат [Невозможно удалить более 20000 записей из базы данных mysql с помощью codeigniter datamapper] (http://stackoverflow.com/questions/17940067/unable-to-delete-more-than-20000-records-from- mysql-database-using-codeigniter-d) – Wietse

ответ

0

Попробуйте изменить ограничение памяти, как это:

ini_set('memory_limit', '-1'); 
+0

Наверное, не правильный маршрут, почти всегда лучше писать код, чтобы не попасть в лимит. –

+0

@JohnV. Я согласен с вами, но я стараюсь иметь больше данных, но у меня их нет. Итак, с этим вопросом, который у меня есть, я не могу ответить. –