Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ALTER ADD 
V
    Опции темы
neoks
Дата 12.7.2011, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: 1
Всего: 1



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

Нашол какой та SQL ну так и не понял.

Код

mysql> delimiter //
mysql> create procedure qqq(IN id_in int)
    -> if exists (select id from world.count where id=id_in)
    -> then select * from world.count where id=id_in;
    -> end if;//


Пытался переделать вот так.

Код

if exists (select adress_1 from comments)
then ALTER TABLE `comments` ADD adress_5 varchar(200)
end if


Не выходит, пишет:

Цитата

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if exists (select adress_1 from comments) then ALTER TABLE `comments` ADD adres' at line 1


Вообщем мне нужно добавить ячейки без ошибки на дубликацию.
Удалять ячейки перед добавление не вариант.

Нужна ваша помощь и возможно ли это вообще!
PM MAIL   Вверх
Zloxa
Дата 12.7.2011, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(neoks @  12.7.2011,  13:36 Найти цитируемый пост)
Вообщем мне нужно добавить ячейки без ошибки на дубликацию.

Почему игнорировать ошибку - не вариант?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neoks
Дата 12.7.2011, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: 1
Всего: 1



Цитата(Zloxa @  12.7.2011,  14:52 Найти цитируемый пост)
Почему игнорировать ошибку - не вариант? 

Вот именно это не и нужна, вопрос как правильно написать ?

PM MAIL   Вверх
Zloxa
Дата 12.7.2011, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(neoks @ 12.7.2011,  15:25)
Цитата(Zloxa @  12.7.2011,  14:52 Найти цитируемый пост)
Почему игнорировать ошибку - не вариант? 

Вот именно это не и нужна, вопрос как правильно написать ?

Я задал вопрос - почему. Мне не понятно.

Если бы мне пришлось реализовывать что-то подобное, я бы просто выполнял 
Код

 ALTER TABLE `comments` ADD adress_5 varchar(200)

и, если происходила бы ошибка, просто игнорировал бы ее.
И все. Проблемы - нет.

Мне не понятна причина, почему вас парит этот вопрос.

Это сообщение отредактировал(а) Zloxa - 12.7.2011, 15:51


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neoks
Дата 12.7.2011, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: 1
Всего: 1



Чот я сам запутался  smile 
Еше раз  smile 

Запрос такой:

Код

ALTER TABLE `comments` ADD adress_1 varchar(200)


Нужна добавить ячейки в таблицу, первый раз все отлично происходит.
Но при попытка добавить повторно ячейки, выскакивает сообщение.

Цитата

#1060 - Duplicate column name 'adress_1'


Вот и отсюда вопрос, как сделать чтоб не было ошибок.
Удалять ячейки перед тем как добавить не прокатит  smile .

PM MAIL   Вверх
Zloxa
Дата 12.7.2011, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(neoks @  12.7.2011,  15:52 Найти цитируемый пост)
Вот и отсюда вопрос, как сделать чтоб не было ошибок.

Мой же вопрос в том, чем мешает вам эта ошибка. Ну есть она и есть. Что в ней плохого?

Добавлено через 2 минуты и 50 секунд
может быть она прерывает выполнение пакетного задания?
Может быть на самом деле вас интересует вопрос - как сделать чтобы среда исполнения не прерывала пакетного задания?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neoks
Дата 12.7.2011, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: 1
Всего: 1



Цитата(Zloxa @  12.7.2011,  15:53 Найти цитируемый пост)
может быть она прерывает выполнение пакетного задания?
Может быть на самом деле вас интересует вопрос - как сделать чтобы среда исполнения не прерывала пакетного задания? 


Да, работает скрипт который обрабатывает запросы, при повторной обработки и выскакивает ошибка которая прерывает всю операцию.

PM MAIL   Вверх
Zloxa
Дата 12.7.2011, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Ладно, не буду ходить вокруг да около.

Вероятнее всего вы пишите сценарий инкреметнального наката обновления схемы данных. Подобные сценании, как правило, не предназначены для повторного выполнения. Не... не "как правило". Не предназначены и баста. По этой причине прерывание работы сценария, в случае, если исходная версия схемы данных не соответствует необходимой - скорее благо, предотвращающее порчу данных нежели зло, которое следует избегать. Вы желаете откровенно странного. 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neoks
Дата 12.7.2011, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: 1
Всего: 1



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

Конечно пользователь захочет повторно установить модуль, а тут баг и дуля с маком  smile ну и что дальше ? скажет пользователь.
Естественно чтоб избежать неприятностей нужно кокой то решение.

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

Теперь ломаю голову и думая что можно еше придумать.
PM MAIL   Вверх
Zloxa
Дата 12.7.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(neoks @  12.7.2011,  16:34 Найти цитируемый пост)
 ну и что дальше ?

Откатываться из бэкапа, который обязательно должен был быть произведен перед установкой, и отвес по полной люлей разрабу. Для того чтобы откатить последствия не полностью отработавшего DDL скрипта, нужны более чем пользовательские компетенции.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neoks
Дата 12.7.2011, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: 1
Всего: 1



Лан, решил сделать по простому и банально.
При добавлении ячеек отключить вывод ошибок.
При обновление оставить вывод ошибок.

Пока не найду альтернативу будет так.


Цитата(Zloxa @  12.7.2011,  16:48 Найти цитируемый пост)
Откатываться из бэкапа, который обязательно должен был быть произведен перед установкой, и отвес по полной люлей разрабу. Для того чтобы откатить последствия не полностью отработавшего DDL скрипта, нужны более чем пользовательские компетенции. 


Не понял о чём речь, может я не доконца объяснил, что за DDL? у меня php движок, а насчет бекапа тоже не совсем понял.
PM MAIL   Вверх
Zloxa
Дата 12.7.2011, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(neoks @  12.7.2011,  17:04 Найти цитируемый пост)
что за DDL?

http://lmgtfy.com/?q=ddl&l=1

Одно из основных отличий DDL от DML в том, что не существует способа обеспечения атомарности операций(как механизм транзакцй в DML), по этой причине срубившийся по ошибке  DDL скрипт может оставить базу данных в не согласованном состоянии. Именно по этой причине DDL надлежит использовать лишь техническому персоналу и лишь при обслуживании базы данных.

Добавлено через 12 минут и 58 секунд
Цитата(neoks @  12.7.2011,  17:04 Найти цитируемый пост)
Не понял о чём речь, может я не доконца объяснил, что за DDL? у меня php движок, а насчет бекапа тоже не совсем понял. 

Пожалуй я тоже не понял о чем речь. Если у вас инсталляционный скрипт, зачем там alter table, почему не сделать сразу в create table. Если у вас не обновление версии базы данных, то где вы используете alter? Не в приложении ли?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neoks
Дата 12.7.2011, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: 1
Всего: 1



Кароче я не черта не понял, и зачем вообще этот DDL и что это такое.
Как говорится по старинке  smile 
PM MAIL   Вверх
Zloxa
Дата 12.7.2011, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(neoks @  12.7.2011,  17:29 Найти цитируемый пост)
Кароче я не черта не понял, и зачем вообще этот DDL и что это такое.

Мне опять ссыль дать штоле? smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
neoks
Дата 12.7.2011, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: 1
Всего: 1



Вот почему люди не любят форумы, они спрашивают как это сделать ?
А им пихают ссылки какие они не понимают, они уже от злости готовы выбросить свой комп в окно.  smile 

Яж только спросил как это сделать и можно это вообще сделать, не надо мне не каких ссылок которые я даже не знаю о чём там речь идет.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.