Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

Приветствую, мастера. В папке модуля есть файл install.sql. При установке модуля, так понимаю, из-за него вываливается ошибка "check that column/key exists: ALTER TABLE `s_product` DROP COLUMN `infoproduct`" in mysqli.php на строке 40. Пробовал менять префикс oc_ на "свой" s_. Т.е. команда не может убрать колонку, которой нет. Сам sql запрос ниже. Укажите направление, кто "в теме", спасибо. Да, и еще, сайт на "локалке" Openserver, может отсюда "ноги растут"?

CREATE TABLE IF NOT EXISTS `oc_order_links` (
      `link_id` int(11) NOT NULL AUTO_INCREMENT,
      `order_id` int(11) NOT NULL,
      `product_id` int(11) NOT NULL,
      `code` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `date_end` datetime NOT NULL,
      `ikey` int(11) NOT NULL,
      PRIMARY KEY (`link_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ALTER TABLE `oc_product` DROP COLUMN `infoproduct`;
ALTER TABLE `oc_product` ADD COLUMN `infoproduct` LONGTEXT CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;

DELETE FROM `oc_url_alias` WHERE query = 'extension/module/infoproduct';
INSERT INTO `oc_url_alias` (`query`, `keyword`) VALUES ('extension/module/infoproduct', 'link');

 

s_product-ocs_product.PNG

Надіслати
Поділитися на інших сайтах


06.04.2022 в 11:20, Tom сказал:

Видимо не :

ALTER TABLE `s_product` 

а:

ALTER TABLE `oc_product` 

 

В файле install.sql — указано

 ALTER TABLE `oc_product`

При установке модуля — ошибка

ALTER TABLE `s_product`

Не понял, что куда из вашего ответа, сори.

Надіслати
Поділитися на інших сайтах


У вас префикс "s_"

Так пробуйте.

CREATE TABLE IF NOT EXISTS `s_order_links` (
      `link_id` int(11) NOT NULL AUTO_INCREMENT,
      `order_id` int(11) NOT NULL,
      `product_id` int(11) NOT NULL,
      `code` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `date_end` datetime NOT NULL,
      `ikey` int(11) NOT NULL,
      PRIMARY KEY (`link_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ALTER TABLE `s_product` DROP COLUMN `infoproduct`;
ALTER TABLE `s_product` ADD COLUMN `infoproduct` LONGTEXT CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;

DELETE FROM `s_url_alias` WHERE query = 'extension/module/infoproduct';
INSERT INTO `s_url_alias` (`query`, `keyword`) VALUES ('extension/module/infoproduct', 'link');

 

Надіслати
Поділитися на інших сайтах

Смотрите что у вас в базе данных.

Добавьте не модулем а через SQL в самой базе эти таблицы и поля....

А в архиве модуля, уберите добавление . 

Надіслати
Поділитися на інших сайтах

06.04.2022 в 11:54, Tom сказал:

А в архиве модуля, уберите добавление . 

Я вас правильно понял - из модуля убираю install.sql, а в phpMySQL добавляю весь код из install.sql именно SQL-запросом? Или что-то из  install.sql нужно вычеркнуть / изменить?

Надіслати
Поділитися на інших сайтах


Через phpMyadmin то же самое

Цитата

#1091 - Невозможно удалить (DROP) 'infoproduct'. Убедитесь что столбец/ключ действительно существует

не может удалить столбец, которого нет (что логично)...

Надіслати
Поділитися на інших сайтах


CREATE TABLE IF NOT EXISTS `s_order_links` (
      `link_id` int(11) NOT NULL AUTO_INCREMENT,
      `order_id` int(11) NOT NULL,
      `product_id` int(11) NOT NULL,
      `code` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `date_end` datetime NOT NULL,
      `ikey` int(11) NOT NULL,
      PRIMARY KEY (`link_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ALTER TABLE `s_product` ADD COLUMN `infoproduct` LONGTEXT CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;
Надіслати
Поділитися на інших сайтах

Без "хвоста" из 3 строк модуль установился, но в карточке товара не появляется тогда строка, где нужно вставлять ссылку, т.е., похоже, стал криво. Значит, эти строчки нужны...

Надіслати
Поділитися на інших сайтах


Эти таблицы ничего не вставляют в карточку товара. Для этого в модуле есть модификатор xml , как минимум.

Надіслати
Поділитися на інших сайтах

06.04.2022 в 13:24, Tom сказал:

Эти таблицы ничего не вставляют в карточку товара. Для этого в модуле есть модификатор xml , как минимум.

Хм, неясно тогда, зачем они нужны. В install.xml - там темный лес для меня (что-куда). Может все же дело в том, что сайт на локалке Openserver и проблемы с настройками mysqli.php? Доделаю сайт, попробую установить модуль на хостинге.

Надіслати
Поділитися на інших сайтах


Всё в вашем модуле, как обычно.

Здесь явно вы сами не то и не так делаете.

Ну или как вариант, модуль этот не под вашу версию.

Научить читать XML будет уже проблематично.

Надіслати
Поділитися на інших сайтах

06.04.2022 в 13:43, Tom сказал:

Ну или как вариант, модуль этот не под вашу версию.

Версия модуля oc23 мой OCStore 2.3.0.2. может он строго под 2.3, без ....0.2. Ранее, любые модули для 2.3 ложились без выше обозначенных проблем. На счет "не то и не так" - по логике вы правы. Что именно? Хороший вопрос, но все как обычно... Заливал и напрямую и через админку, модификацию обновлял, в списке модулей, модуль активировал. Ну, разве что святой водой монитор не поливал. Ну, да ладно, буду "чесать репу")

Надіслати
Поділитися на інших сайтах


выполните эти запросы в PMA и не парьтесь

install.sql это, увы, один из экспериментов даниеля

 

Надіслати
Поділитися на інших сайтах

06.04.2022 в 14:24, chukcha сказал:

выполните эти запросы в PMA и не парьтесь

Да выполнял...

Цитата

#1091 - Невозможно удалить (DROP) 'infoproduct'. Убедитесь что столбец/ключ действительно существует

Не удаляется столбец, которого нет... Все больше склоняюсь, что модуль под ос2.3 не становится просто под мою ос2.3.0.2

Надіслати
Поділитися на інших сайтах


 

06.04.2022 в 14:47, hostup сказал:

Не удаляется столбец, которого нет...

Ну так пропустите эту строку
На нет и суда нет.

Надіслати
Поділитися на інших сайтах

06.04.2022 в 14:48, chukcha сказал:

Ну так пропустите эту строку

Grand Master Tom, выше, предложил удалить 3 строки

ALTER TABLE `s_product` DROP COLUMN `infoproduct`;
DELETE FROM `s_url_alias` WHERE query = 'extension/module/infoproduct';
INSERT INTO `s_url_alias` (`query`, `keyword`) VALUES ('extension/module/infoproduct', 'link');

и модуль установился, но в карте товара не появляется поле "инфопродукт". Он пояснил, что sql код за это не отвечает, а значит, проблемы на стороне install.xml, а если так - там все сложно.

Попробую, конечно, сейчас без DROP COLUMN строки закинуть, но вряд ли во вкладке товара от этого строка появится...

Надіслати
Поділитися на інших сайтах


Вы кеш модификаторов попробуйте обновить, а потом на всякий, ещё и в разделе Система- Пользователи, выделить все разделы для админа(ну или под кем вы там в админке).

Надіслати
Поділитися на інших сайтах

06.04.2022 в 15:14, Tom сказал:

Система- Пользователи

1. Вычистил все установленные модулем php и tpl из папок и перезалил БД.

2. Установил через админку (без строки) ALTER TABLE `s_product` DROP COLUMN `infoproduct`;

3. Очистил и обновил модификаторы.

4. Активировал модуль в модули/расширения

5. Система-Пользователи-Группа пользователей-Administrator-Выделить все (на  просмотр и внесение изменений)

Но в карточке товара не появилась заветная строка... Ок, залью, как доделаю сайт, там буде видно...

Надіслати
Поділитися на інших сайтах


Любой модификатор xml, по сути текстовый файл. Найти в таком то файле, такую то строку, сделать то то.

Вот и откройте и сверяйте, с тем что в файле и в ваших файлах магазина, куда этот мод вносит правки.

Надіслати
Поділитися на інших сайтах

06.04.2022 в 20:57, Tom сказал:

Найти в таком то файле, такую то строку

В эту сторону и смотрю. Все пути, вида (<file path="") в .xml файле верные.

Код, который отвечает за внесение поля в карточку товара имеет какие-л. типичные признаки для поиска в  .xml документе? Ну, там ['insert'] или <placehere_...>?

Надіслати
Поділитися на інших сайтах


Идите в бд и пробуйте там запрос

ALTER TABLE oc_product DROP COLUMN infoproduct;

 

06.04.2022 в 14:05, hostup сказал:
CREATE TABLE IF NOT EXISTS `oc_order_links` (
      `link_id` int(11) NOT NULL AUTO_INCREMENT,
      `order_id` int(11) NOT NULL,
      `product_id` int(11) NOT NULL,
      `code` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `date_end` datetime NOT NULL,
      `ikey` int(11) NOT NULL,
      PRIMARY KEY (`link_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ALTER TABLE `oc_product` DROP COLUMN `infoproduct`;
ALTER TABLE `oc_product` ADD COLUMN `infoproduct` LONGTEXT CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;

 

Логика кода выше: Создаете таблицу, потом удаляете колонку которой нет, потом пытаетесь создать.

Может сначало создать а потом удалять???!!!!

 

Надіслати
Поділитися на інших сайтах

08.04.2022 в 03:09, Venter сказал:

Может сначало создать а потом удалять?

Может и так, но я тогда "теряю веру в логику))". Налил чай, вылил... а выпить? Так или иначе, без строки DROP COLUMN модуль устанавливается, но во вкладке "товары" не появляется поле "Инфопродукты", значит, как утверждает Grand Master Tom, ковырять надо .xml файл. Пути в нем проверил, а какой код отвечает за добавление поля, понять не могу.

Надіслати
Поділитися на інших сайтах


Что за модуль такой?

У вас инсталл должен сработать единожды. В момент самой первой установки. И если он создал таблицы, то этот файл удалить нужно по хорошему (здесь не доработка автора).

Второй момент "должен появится во вкладке Товары", может это в вашем понимании так. А модуль например имеет ещё и некие настройки в виде самостоятельного модуля со своей панелью настроек, где этот самый вывод, просто отключен итд итп.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.