Компонент CSVI Pro

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

Если у вас при попытке экспорта товара возникает ошибка Nginx 502 (server bad gateway) или просто при экспорте рушится страница (вкладки и поля в кучу собираются), то возможно вам поможет мое решение.
На хостинге я этого сделать не мог, но как только перенес сайт к себе, посмотрел в логи NGINX, там обнаружилось что
upstream sent invalid header while reading response header from upstream

Но это мало информации дает. Апач навернулся там обо что-то и неправильные заголовки отдал. А в логах апача ничего "больного" не видно.
Отключаем Nginx, перегружаем сервер, идем на страницу, вызывающую ошибку и видим что-то такое:
Обнаружена ошибка.
1146 Table 'kaskad.dt8s6_virtuemart_categories_en_gb' doesn't exist SQL=SELECT x.category_parent_id AS parent_id, x.category_child_id AS id, l.category_name AS catname FROM dt8s6_virtuemart_categories c LEFT JOIN dt8s6_virtuemart_category_categories x ON c.virtuemart_category_id = x.category_child_id LEFT JOIN dt8s6_virtuemart_categories_en_gb l ON l.virtuemart_category_id = c.virtuemart_category_id

Таблицы виртуемарта, ответственные за английский язык не были созданы, и это вызывает ошибку, т.к. CSVI в первую очередь обращается к ним, чтобы считать доступные данные о полях. Возникнуть такая ситуация может в случае, если вы изначально устанавливали Вирт в русской локализации, т.е. он не предполагал, что ваш сайт может быть в EN_GB.

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

В общем дело исправить можно так: скачал дамп таблиц вирта с русским языком (ru_ru), переименовал их в английский вариант (en_gb) и залил обратно через phpMyAdmin, создав необходимые таблицы.

Теперь всё работает как положено - и вирт, и экспорт. Не забудьте вернуть русский язык в настройках сайта, если поменяли. Ну и, можно NGINX включать обратно.

Файлы с дампом приложены к этому посту на случай, если проблема настигнет кого-то ещё (для обоих вариантов, RU и EN). Единственное, что вам нужно будет сделать дополнительно перед импортом - это поменять префикс таблиц (0000_) на свой, посмотрите в настройках сайта -> сервер -> префикс таблиц базы данных

Надеюсь, помог кому-то сохранить кучу нервов. А, возможно, и денег.

P.S. Решение актуально для Virtuemart 3.0.9 (думаю, и вся третья линейка) и кодировки сайта UTF8
 

Вложения

  • virtuemart 3-0-9 lang tables fix [2015-06-09@14-12-46].zip
    2,4 KB · Просмотры: 22
  • Нравится
Реакции: Voro
Дык. та же проблема в обратную сторону! Если нет русских таблиц/ то магазин не работает после установки русского языка. Я просто экспортирую таблицы с en_gb в конце, переименовываю в ru_ru и заливаю в базу через phpMyAdmin
 
1. Установить русский для админки и фронта
2. Выбрать языки по умолчанию.
3. Добавить язык контента Для просмотра ссылки Войди или Зарегистрируйся
4. В настройках марта указать допустимые языки (русский) + галочка "брать не переведенный строки из англ" (примерно так там написано)
5. Если не получается - проверить наличие таблиц ru-ru в БД

Если после этого ничего не выходит - вывод один - рукож..сть. Иначе никак не назвать

При импорте через CSVI указывать в настройках язык импортируемых данных, так как он будет импортить именно для выбранного языка
 
Перенес работающий проект на другой хостинг, вернее на облачный раздел внутри того же хостинга (jino).
Теперь при тех же самых операциях загрузки товаров из файла НИЧЕГО не происходит. Страница моментально обновляется, в логах ни сервачных, ни CSVI - ничего нет. Ошибок не выводится, даже в режиме отладки joomla.
Доступность временных папок проверил... Куда копнуть еще можно, посоветуйте?
 
При экспорте, вернее попытке экспорта из CSVI вылетает ошибка 1146, ссылается на отсутствие таблицы "qk94q_virtuemart_vendors", при чем в PHPMyAdmin данная таблица существует и все поля заполнены и языки проставлены верно.
Joomla 3.4.3+VM 3.0.6+ CSVI 5.19

Помогите плз!
 
При экспорте, вернее попытке экспорта из CSVI вылетает ошибка 1146, ссылается на отсутствие таблицы "qk94q_virtuemart_vendors", при чем в PHPMyAdmin данная таблица существует и все поля заполнены и языки проставлены верно.
Joomla 3.4.3+VM 3.0.6+ CSVI 5.19

Помогите плз!
Скорее всего некорректно заполнено поля в табличке qk94q_virtuemart_vendors или в базе ошибки при создании этой таблички. Попробуй подгрузит таблицы от рабочего проекта потом свои данные подлей.
 
Можно попробовать поставить Akeeba Admin Tools и отремонтировать таблицы. Там есть такой инструмент
 
можно попробовать поставить Akeeba Admin Tools и отремонтировать таблицы. Там есть такой инструмент

Пробовала. Ноль эмоций

Скорее всего некорректно заполнено поля в табличке qk94q_virtuemart_vendors или в базе ошибки при создании этой таблички. Попробуй подгрузит таблицы от рабочего проекта потом свои данные подлей.

Это мой единственный проект(
 
Создайте данную таблицу

Код:
CREATE TABLE IF NOT EXISTS `qk94q_virtuemart_vendors` (
  `virtuemart_vendor_id` smallint(1) UNSIGNED NOT NULL AUTO_INCREMENT,
  `vendor_name` char(64),
  `vendor_currency` int(1),
  `vendor_accepted_currencies` varchar(1536) NOT NULL DEFAULT '',
  `vendor_params` varchar(17000) NOT NULL DEFAULT '',
  `metarobot` char(20),
  `metaauthor` char(64),
  `created_on` datetime NOT NULL default '0000-00-00 00:00:00',
  `created_by` int(1) NOT NULL DEFAULT '0',
  `modified_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified_by` int(1) NOT NULL DEFAULT '0',
  `locked_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `locked_by` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`virtuemart_vendor_id`),
  KEY `vendor_name` (`vendor_name`),
  KEY `vendor_currency` (`vendor_currency`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='Vendors manage their products in your store' AUTO_INCREMENT=1 ;

После этого в Virtuemart заполните необходимые поля настройки магазина (название, валюта и т.п)
 
К сожалению, это тоже не помогло. Просмотрела структуру существующей таблицы qk94q_virtuemart_vendors, так там все так и заполнено. SQL-запрос на создание этой таблицы на всякий случай сделала (запрос выполнен успешно), но все равно ничего не поменялось. Даже после последующей переустановки компонента, очистки кэша, создания нового шаблона на экспорт в csvi, и нажатия кнопки "Установить таблицы или обновить их" в "инструменты и миграция" в виртумарте. Ничего не поменялось. Экспорт происходит, но когда открываю файл, там та же ошибка 1146 Table 'helenium_db1.qk94q_virtuemart_vendors_' doesn't exist SQL=SELECT `qk94q_virtuemart_vendors`.* ,`qk94q_virtuemart_vendors_`.* FROM `qk94q_virtuemart_vendors` INNER JOIN `qk94q_virtuemart_vendors_` using (`virtuemart_vendor_id`) WHERE `qk94q_virtuemart_vendors`.`virtuemart_vendor_id` = "1"

А экспорт тестовых товаров из виртумарта все же хотелось бы сделать, чтоб по аналогии заполнить прайс и импортировать его через csvi. Импорт тоже частично не работает, почему то не импортируются категории товаров, цены и gtin. A наименование, артикул, производитель и настраиваемые поля на своих местах. Хотя кодировка везде где только можно utf-8 и разделители заданы такие же как и в шаблоне для импорта. Вообще ни импорта, ни экспорта. А 25 000 карточек, руками заполнять полгода буду, что не вариант(
Помогите, плз
Где может быть ошибка?
 
Последнее редактирование модератором:
Назад
Сверху