![]() |
|
Модераторы: skyboy |
![]()
|
|
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 8 Всего: 31 |
Вот.. сейчас пишу UDF для извлечения куска XML по XPATH..
Какое API у MySQL для индикации ошибок функций:
т.е. если UDF обнаружила ошибку (например неверный формат) на какой либо строке, то мы ставим *err = 1 но MySQL(!) это инетерпретирует как возврат NULL для данной и последующих строк (или вообще пустой строки если функция объявлена как не возвращающая NULL). Логично, не правда ли ? |
|||
|
||||
| zav74 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 19.7.2006 Репутация: нет Всего: нет |
Всем привет! Некоторое время назад я решил перевести комплекс MFC-программ с Sybase 5.0(очень уж старая) на MySQL. Принцип работы - устанавливается сервер, далее через мое приложение пользователь создает БД и работает с ней. Но до сих пор у меня это сделать не получилось. Моя задача создать из шаблона пустую БД со всеми процедурами и триггерами. Но в MySQL не получается. Напрямую как в Postgres нет возможностей. Если через скрипты, тоже сложно. Одна из проблем заключается в создании процедур, с DELIMITER. Никак не получается создать из приложения процедуру через ODBC, а через libmysql.dll только по одной. Проблема с удалением-верхная таблица имеет две подчиненные с которыми сзязь del©, но эти таблицы связаны между собой del®. С этом случае как повезет, может дать удалить, а может и нет. Пробовал решить эту проблему при помощи триггера, не вышло из-за ограничений у триггера. Еще в одной версии надо ставить (;) в другой нет. Ходя СУБД уже много лет в эксплуатации, но мелочные проблемы остались. Вот и склоняюсь теперь в сторону Postgres-там этих проблем не наблюдал, а точнее я вообще никаких странностей не видел.
Хотя может MySQL не для этих целей. |
|||
|
||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 20 Всего: 40 |
CLIENT_MULTI_STATEMENTS не забыл поставить при открытити соединения? Куда ставить? это ты о чем?
ну значит все впереди -------------------- Бонифаций. |
|||
|
||||
| zav74 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 19.7.2006 Репутация: нет Всего: нет |
При использовании CLIENT_MULTI_STATEMENTS функции стали записываться и таблицы, но не ссылки
их опять только по одной. Да и в ODBC - CLIENT_MULTI_STATEMENTS не поможет. Просто переводимое приложение на ODBC работает, поэтому тестовый вариант хотелось бы на нем сделать. А насчет (;), я в форуме нашел, что в конце процедуры в одной версии надо ставить, в другой нет. |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 8 Всего: 31 |
||||
|
||||
| sandello |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: нет Всего: 2 |
Типа, в оракле и посгерсе их нет? Так ты их или не знаешь или они тебя устраивают. У любой вещи есть область применения. Если вещь (mysql) подходит для твоей задачи - используй. Если нет - используй другую. В противном случае можно и до забивания гвоздей микроскопом дойти. В любом случае, mysql не самая простая софтина. И её документацию стоит изучить. Подводных камней там мнооого Не удобно штаны через голову одевать © не мой. Тебе не удобно делать что-то конкретное? Т.е. какую-то задачу очень не просто решить в mysql но очень просто - в оракле? Тогда вычисляй стоимость неудобства и если она высока - покупай оракл. Если нет - используй то, что есть. Вообще, спор «удобно/неудобно» довольно бестолковое занятие, какие-то сферические кони в вакууме. Речь может идти или о конкретных особенностях, или о решении конкретных задач. Тебе это все нужно? Тогда используй PostgreSQL. Зачем полез в MySQL? Ну так и используй его для этого. «Белаз - огромный грузовик. Но, блин, за грибами на нем ездить не удобно.» - ничего не напоминает? Тебя, кстати, не смущает, что в оракле varchar не стоит использовать? -------------------- ![]() |
|||
|
||||
| zav74 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 19.7.2006 Репутация: нет Всего: нет |
Ну про Белаз сравнение не совсем корректное. Все автомобили должны ездить, заправляться доступным топливом и т.д. Далее уже есть тонкости грузоподъемность, скорость, удобство наконец. А когда в СУБД есть функции и они работают-этому нет оправдания. Тогда уж надо их вообще исключать. Я вот уже несколько месяцев с MySql мучаюсь(модернизирую структуру и меняю СУБД), уже структуру БД изменил, приложения переписал и т.д. Но вот постоянно возникает какая то неочевидная засада. Последняя из них - функции не записываются в файл при выполнении mysqldump. Вот таблицы с ссылками создаются, а функции нет. Это все равно что заехал на Белазе в карьер, загрузился, а оказывается задняя передача не работает и тебе предлагают на Камаз пересесть. Надеюсь, у меня хватит терпения добить этот проект и не менять СУБД, хотя в принципе мои требования должна выполнять любая реляционная СУБД.
|
|||
|
||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 20 Всего: 40 |
Да ну! не записываются?? а документацию пробовал читать? например про ключик --routines ? Или про бэкап mysql.proc ? Читаем -------------------- Бонифаций. |
|||
|
||||
| sandello |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: нет Всего: 2 |
Ты так и не пояснил, на кой черт это тебе запонадобилось? А это зачем? -------------------- ![]() |
|||
|
||||
| zav74 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 19.7.2006 Репутация: нет Всего: нет |
бэкап mysql.proc - взять то можно, только вот правильно ли это, да и записывать как то сложно. А вот про --routines - не слышал, и гугле ничего не нашел, может быть и найдется решение, но они все так спрятаны. Это вот четвертая СУБД-где что-то большое делаю, но пока трудозатраты здесь на порядок больше и приходится огороды некрасивые городить.
Просто очередная модернизация комплекса. Структуру поменял не из-за MySql, а из-за модернизации. СУБД у меня была очень старая-Sybase SQL 5.0. Модернизированный комплекс предполагает возможность работы в Win и Linux. У меня есть опыт работы с Postgres, хотел еще и MySql попробовать и выкатить в опытную эксплуатацию. Я это написал к тому, что уже успел сделать кучу работы(переписаны сотни запросов, форм вводов, расчетов и т.д.), а стопорюсь постоянно на какой то фигне-это и раздражает. Если придется бросить MySql-то в Postgres, я думаю, все сделать за несколько недель-структуру уже менять не надо. Но вот хочется все таки закончить в MySql. |
||||
|
|||||
| sandello |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: нет Всего: 2 |
В MySQL большинство затребованных тобой возможностей появились сравнительно недавно. MySQL v3 вообще не имел хранимок, да и реляционный движок появился тоже не сильно давно. Т.е. система выросла из очень простых задач, которые она успешно решала. Теперь постепенно наращивает функционал.
Дока, она не только в гугле
-------------------- ![]() |
||||
|
|||||
| zav74 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 19.7.2006 Репутация: нет Всего: нет |
Система уже много лет используется в разных городах. Главная задача была усовершенствовать структуру, сделать нормальный сервер БД и сделать конвертацию из старых БД. Времени и возможностей много разъезжать нет, поэтому многие функции администрирования БД хотел бы реализовать через свой интерфейс-чтобы пользователи смогли справиться. После всех структурных изменений-не так важно на какой СУБД работаешь, переход не будет болезнен, вот и захотел опробовать MySql. Мой кстати первый вопрос и был-стоит ли использовать MySql.
Спасибо. Я вот это уже нашел-вроде работает. |
||||
|
|||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 20 Всего: 40 |
В каком смысле спрятаны? Какой еще гугл? Я же ссылку даже привел - в документации все прекрасно описано.. -------------------- Бонифаций. |
|||
|
||||
| zav74 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 19.7.2006 Репутация: нет Всего: нет |
Я уже нашел и написал чуть выше |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |