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

Не работает Alter через install.php


Recommended Posts

Хочу добавить в таблицу столбец через модуль. Создал install.php и добавил туда:

<?php
// Add min quantity column
//$sql = "DESCRIBE " . DB_PREFIX ."product_option_value `min_quantity`";
//$query = $this->db->query($sql);
//if ($query->num_rows == 0) {
        $this->db->query("ALTER TABLE `product_option_value` ADD `min_quantity` int(3) NOT NULL DEFAULT '0' AFTER `quantity`");
}?>

Также добавил install.xml:

<?xml version="1.0" encoding="utf-8"?>
<modification>
    <name>Нотификатор продуктов</name>
    <code>Min-Products-Notificator</code>
    <version>1.0</version>
    <author>Test test</author> 
</modification>

Установил модуль: [ocmod.net] extension-installer-extender.ocmod - вроде вычитал, что без него никак. Хотя не понятно, как же тогда работают другие модули.

Завернул все в архив и установил. Ошибок нет, но и столбец не появился. Что я сделал не правильно?

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


8 hours ago, spectre said:

не ставьте с ocmod net

 

а по теме  у вас в запросе нет DB_PREFIX

Ок, модуль удалю, попробую без него. А префикс сознательно удалил, т.к. посмотрел в базе, а там никаких префиксов нет в именах. Видимо, чего-то не знаю. Добавлю. А можно через модификатор добавить строчку скрипта в js? В данном случае создание нового скрипта не поможет, нужно именно модифицировать старый.

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


1 час назад, Yurii_l сказал:

А префикс сознательно удалил, т.к. посмотрел в базе, а там никаких префиксов нет в именах.

Если в БД нет, то не добавляйте.
 

 

1 час назад, Yurii_l сказал:

А можно через модификатор добавить строчку скрипта в js?

Нельзя.
 

 

9 часов назад, Yurii_l сказал:

Создал install.php и добавил туда:

Ваш файл с ошибкой. Видимо, вывод ошибок отключен, потому просто не работает.
Верните, как было:
 

<?php
// Add min quantity column
$sql = "DESCRIBE " . DB_PREFIX ."product_option_value `min_quantity`";
$query = $this->db->query($sql);
if ($query->num_rows == 0) {
        $this->db->query("ALTER TABLE `product_option_value` ADD `min_quantity` int(3) NOT NULL DEFAULT '0' AFTER `quantity`");
}?>

Не надо бездумно комменты ставить. И даже префикс отключать не требуется, если его в конфиге нет, то и не будет.

Или так, если проверять ничего не надо:
 

<?php

        $this->db->query("ALTER TABLE `product_option_value` ADD `min_quantity` int(3) NOT NULL DEFAULT '0' AFTER `quantity`");
?>


 

Змінено користувачем Shureg
Надіслати
Поділитися на інших сайтах


6 минут назад, Shureg сказал:

ALTER TABLE `product_option_value` ADD `min_quantity` int(3) NOT NULL DEFAULT '0' AFTER `quantity`

Забейте уже это просто в phpmyadmin без всяких окмодов, если надо просто колонку добавить

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


5 minutes ago, Shureg said:

Если в БД нет, то не добавляйте.
 

 

Нельзя.
 

 

Ваш файл с ошибкой. Видимо, вывод ошибок отключен, потому просто не работает.
Верните, как было:
 


<?php
// Add min quantity column
$sql = "DESCRIBE " . DB_PREFIX ."product_option_value `min_quantity`";
$query = $this->db->query($sql);
if ($query->num_rows == 0) {
        $this->db->query("ALTER TABLE `product_option_value` ADD `min_quantity` int(3) NOT NULL DEFAULT '0' AFTER `quantity`");
}?>

Не надо бездумно комменты ставить. И даже префикс отключать не требуется, если его в конфиге нет, то и не будет.

Ясно, нужно будет включить показ ошибок. Я закоммннтировал строчки, которые не влияют на работоспособность скрипта на обновление таблицы. Хотя пробовал изначально как раз незакомментированные.

Скрипт, я так понимаю, придется через install.xml, отключать старый в видах, а подключать свой, который будет отличаться всего одной строчкой. Ну такое )

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


26 minutes ago, Shureg said:

Ваш файл с ошибкой. Видимо, вывод ошибок отключен, потому просто не работает.
Верните, как было:

1) Убрал комментирование
2) Добавил префикс

3) включил ошибки:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

Модуль устанавливается как и раньше, ошибки не отображаются, при установке модуля код 200, в таблице БД изменений по-прежнему нет.

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


6 minutes ago, Yurii_l said:

1) Убрал комментирование
2) Добавил префикс

3) включил ошибки:


ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

Модуль устанавливается как и раньше, ошибки не отображаются, при установке модуля код 200, в таблице БД изменений по-прежнему нет.

В журнале ошибок кстати тоже ничего.

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


9 минут назад, Yurii_l сказал:

Модуль устанавливается как и раньше, ошибки не отображаются, при установке модуля код 200, в таблице БД изменений по-прежнему нет.

Вы для какой версии делаете? Если для 3-й, то там не работают никакие install. И простых решений нет. Либо делайте в контроллере-модели модуля исполняемого, либо внешний файл установочный

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


3 часа назад, Shureg сказал:

И простых решений нет.

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=31227

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

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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