powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ALTER TABLE в командной строке по условию
8 сообщений из 8, страница 1 из 1
ALTER TABLE в командной строке по условию
    #39244289
dimon71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, форумчане!
Необходимо выполнить простейший запрос из КОМАНДНОЙ СТРОКИ (не из программного кода и без создания функций или процедур).
Если определенная колонка в таблице существует, то ничего не делать, если нет - создать.
Я понимаю что узнать наличие колонки можно через information_schema.COLUMNS.
Проблема в том, что ни if ни динамические запросы в MySQL нельзя выполнить из КОМАНДНОЙ строки (Может я что неправильно понял?).
Может кто знает решение?

Вот что-то типа такого, но работающее:

SELECT @a:= COUNT(*) FROM information_schema.`COLUMNS` WHERE TABLE_NAME = 'oc_product' AND COLUMN_NAME = 'template';
if (@a < 1) THEN
BEGIN
ALTER TABLE `oc_product` add `template` varchar(255);
END
...
Рейтинг: 0 / 0
ALTER TABLE в командной строке по условию
    #39244306
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimon71Если определенная колонка в таблице существует, то ничего не делать, если нет - создать.Просто безусловно создавай. Если поле есть - ну обломится выполнение по ошибке, и хрен бы с ею...
...
Рейтинг: 0 / 0
ALTER TABLE в командной строке по условию
    #39244311
dimon71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Это модификатор к движку opencart.
Если будет ошибка - движок не установит модуль. Т.е первая установка пройдет, а потом снес - уже не поставишь. Я бы не мучался.
...
Рейтинг: 0 / 0
ALTER TABLE в командной строке по условию
    #39244331
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimon71Если будет ошибка - движок не установит модуль.
Это свойство установщика, причём неуправляемое?

dimon71Если определенная колонка в таблице существует, то ничего не делать, если нет - создать.
А в этой таблице есть данные? и если да - подлежат ли они сохранению?
...
Рейтинг: 0 / 0
ALTER TABLE в командной строке по условию
    #39244339
dimon71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
Свойство установщика неуправляемое.
Ну чтоб не пинали ногами, можно конечно сделать и через php - лишними установочными файлами, но хотелось бы красиво через sql.

Таблица содержит данные и терять их нельзя.
...
Рейтинг: 0 / 0
ALTER TABLE в командной строке по условию
    #39244363
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А теперь поясни, что значат слова "из командной строки". Надо ли это понимать так, что установщик может только вызвть навыполнение консольную команду и проверяет, не веруля ли ненулевой код ошибки?

Если я прав, то тебе сначала надо из инсталлятора извлечь на диск текстовый файл с SQL-скриптом, а потом одной командой выполнить его. Ну а уж внутри файла никто не мешает тебе размахнуться на любое количество запросов, в т.ч. создать ХП снужно тебе логикой, выполнить ее и дропнуть.
...
Рейтинг: 0 / 0
ALTER TABLE в командной строке по условию
    #39244383
dimon71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaА теперь поясни, что значат слова "из командной строки". Надо ли это понимать так, что установщик может только вызвть навыполнение консольную команду и проверяет, не веруля ли ненулевой код ошибки?

Если я прав, то тебе сначала надо из инсталлятора извлечь на диск текстовый файл с SQL-скриптом, а потом одной командой выполнить его. Ну а уж внутри файла никто не мешает тебе размахнуться на любое количество запросов, в т.ч. создать ХП снужно тебе логикой, выполнить ее и дропнуть.

"Командная строка" это как бы словесный эквивалент. Установщик читает файл и отдает на выполнение MySQL серверу.

Хостинги как правило не дают возможность создания процедур. Так что создать процедуру или функцию не получится.

Вот и получается, есть "командная строка" и нужно сделать такой финт.
У меня не получилось.
Но мастерами земля полнится, может делал кто подобное.
...
Рейтинг: 0 / 0
ALTER TABLE в командной строке по условию
    #39244523
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimon71Хостинги как правило не дают возможность создания процедур.
А ещё они столь же обычно не дают права FILE? Тогда тотальный облом. Без использования процедур или динамического SQL ты ничего не сделаешь, ибо DDL не имеют секции WHERE, а конструкции управления ходом исполнения работают только в ХП. И сгенерировать SQL-скрипт ты не можешь, вернее, сгенерить можешь, а на диск положить нет...

dimon71может делал кто подобное.
Ищи возможность управлять ходом исполнения на уровне инсталлятора.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ALTER TABLE в командной строке по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]