490f08a9

Ошибка индексации в magento

Magento, Баги, глюки, ошибки, недочеты, Программирование

Tagged Under : , , , ,

При обновлении интернет магазина magento с версии 1.4.0 до 1.6.2 столкнулся с такой вот ошибкой, которая не давала сделать reindex

DEBUG (7): Exception message: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`xxx`.`catalog_category_product_index`, CONSTRAINT `
` FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`entity_id`)

Когда начал разбираться, оказалось, что в базе данных в таблице catalog_category_product_index есть продукты которые привязаны к несуществующим категориям. Как такое могло произойти не выяснял, но факт остается фактом.

Мои действия  по исправлению ситуации: Читать дальше »


Frontend vs Backend

Программирование

Tagged Under : , , , ,

Сделав за свою карьеру не один десяток сайтов, пришел к одному выводу. И вывод это такой: чем лучше написан backend, тем проще писать frontend. И это не просто слова, а вполне реальный факт, который я вынес за почти 5 лет работы.

В последнее время средние и большие проекты в нашей организации пишутся двумя программистами. Вот примерный ход работы над каким-либо бизнес порталом или большим сайтом для не коммерческой организации (сразу оговорюсь, что backend я тоже пишу, но несколько реже, это зависит не от меня):

  1. Мой сотрудник по тех. заданию пишет backend.
  2. Я в это время верстаю страницы из готовых psd дизайнов.
  3. Как только созданы таблицы в базе данных, и определена логика, я начинаю заполнять html шаблоны данными из базы данных.
  4. и т.д.

И вот тут начинается самое интересное. Так как я надеюсь, что логика backend выполнена на высшем уровне, я и не делаю очевидных проверок в скриптах на frontend. Кто-то конечно скажет, что проверки делать обязательно везде и всегда, но мне из опыта известно совсем другое. Как правило хостинги последнее время начинают урезать количество запросов в секунду к серверу БД. И я считаю это правильным, так как существуют вполне себе известные cms, которые не заботятся об этом факторе и у них на главной странице запросов к БД больше 30-40, хотя если все пересмотреть и подумать хорошенько, и воспользоваться join или выборкой из нескольких страниц, то это число можно сократить как минимум вдвое. Также очень  важно спроектировать изначально правильно структуру таблиц и связи между ними, учитывая преимущества реляционных БД, или преимущества NoSQL БД.

Ниже я буду приводить те примеры, которые видел сам и от которых хочу предостеречь вас. Так же хочу заметить, что эти примеры будут приводиться на php, mysql, но на самом деле не важно каким языком программирования и БД вы будете пользоваться. Главное здесь логика, взаимосвязь между логическими еденицами. Читать дальше »