|
|
|
ALTER TABLE в командной строке по условию
|
|||
|---|---|---|---|
|
#18+
Добрый день, форумчане! Необходимо выполнить простейший запрос из КОМАНДНОЙ СТРОКИ (не из программного кода и без создания функций или процедур). Если определенная колонка в таблице существует, то ничего не делать, если нет - создать. Я понимаю что узнать наличие колонки можно через 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2016, 18:06 |
|
||
|
ALTER TABLE в командной строке по условию
|
|||
|---|---|---|---|
|
#18+
dimon71Если определенная колонка в таблице существует, то ничего не делать, если нет - создать.Просто безусловно создавай. Если поле есть - ну обломится выполнение по ошибке, и хрен бы с ею... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2016, 18:33 |
|
||
|
ALTER TABLE в командной строке по условию
|
|||
|---|---|---|---|
|
#18+
Akina, Это модификатор к движку opencart. Если будет ошибка - движок не установит модуль. Т.е первая установка пройдет, а потом снес - уже не поставишь. Я бы не мучался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2016, 18:37 |
|
||
|
ALTER TABLE в командной строке по условию
|
|||
|---|---|---|---|
|
#18+
dimon71Если будет ошибка - движок не установит модуль. Это свойство установщика, причём неуправляемое? dimon71Если определенная колонка в таблице существует, то ничего не делать, если нет - создать. А в этой таблице есть данные? и если да - подлежат ли они сохранению? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2016, 19:31 |
|
||
|
ALTER TABLE в командной строке по условию
|
|||
|---|---|---|---|
|
#18+
Akina, Свойство установщика неуправляемое. Ну чтоб не пинали ногами, можно конечно сделать и через php - лишними установочными файлами, но хотелось бы красиво через sql. Таблица содержит данные и терять их нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2016, 19:46 |
|
||
|
ALTER TABLE в командной строке по условию
|
|||
|---|---|---|---|
|
#18+
А теперь поясни, что значат слова "из командной строки". Надо ли это понимать так, что установщик может только вызвть навыполнение консольную команду и проверяет, не веруля ли ненулевой код ошибки? Если я прав, то тебе сначала надо из инсталлятора извлечь на диск текстовый файл с SQL-скриптом, а потом одной командой выполнить его. Ну а уж внутри файла никто не мешает тебе размахнуться на любое количество запросов, в т.ч. создать ХП снужно тебе логикой, выполнить ее и дропнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2016, 21:08 |
|
||
|
ALTER TABLE в командной строке по условию
|
|||
|---|---|---|---|
|
#18+
AkinaА теперь поясни, что значат слова "из командной строки". Надо ли это понимать так, что установщик может только вызвть навыполнение консольную команду и проверяет, не веруля ли ненулевой код ошибки? Если я прав, то тебе сначала надо из инсталлятора извлечь на диск текстовый файл с SQL-скриптом, а потом одной командой выполнить его. Ну а уж внутри файла никто не мешает тебе размахнуться на любое количество запросов, в т.ч. создать ХП снужно тебе логикой, выполнить ее и дропнуть. "Командная строка" это как бы словесный эквивалент. Установщик читает файл и отдает на выполнение MySQL серверу. Хостинги как правило не дают возможность создания процедур. Так что создать процедуру или функцию не получится. Вот и получается, есть "командная строка" и нужно сделать такой финт. У меня не получилось. Но мастерами земля полнится, может делал кто подобное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2016, 21:55 |
|
||
|
ALTER TABLE в командной строке по условию
|
|||
|---|---|---|---|
|
#18+
dimon71Хостинги как правило не дают возможность создания процедур. А ещё они столь же обычно не дают права FILE? Тогда тотальный облом. Без использования процедур или динамического SQL ты ничего не сделаешь, ибо DDL не имеют секции WHERE, а конструкции управления ходом исполнения работают только в ХП. И сгенерировать SQL-скрипт ты не можешь, вернее, сгенерить можешь, а на диск положить нет... dimon71может делал кто подобное. Ищи возможность управлять ходом исполнения на уровне инсталлятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2016, 08:57 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1831741]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
193ms |
get topic data: |
10ms |
get first new msg: |
41ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 542ms |

| 0 / 0 |
