Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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

Link to comment
Share on other sites


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

Видимо не :

ALTER TABLE `s_product` 

а:

ALTER TABLE `oc_product` 

 

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

 ALTER TABLE `oc_product`

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

ALTER TABLE `s_product`

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

Link to comment
Share on other sites


У вас префикс "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');

 

Link to comment
Share on other sites

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

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

Так я же говорил,

Цитата

Пробовал менять префикс oc_ на "свой" s_

Ну, т.е. префикс)

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites


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

Цитата

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

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

Link to comment
Share on other sites


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;
Link to comment
Share on other sites

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

Link to comment
Share on other sites


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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites


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

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

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites


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

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

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

Цитата

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

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

Link to comment
Share on other sites


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 строки закинуть, но вряд ли во вкладке товара от этого строка появится...

Link to comment
Share on other sites


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

Link to comment
Share on other sites

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

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

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

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

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

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

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

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

Link to comment
Share on other sites


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

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

Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites


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

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;

 

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

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

 

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.