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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> После других БД с MySQL просто невозможно работать 
:(
    Опции темы
sir_nuf_nuf
Дата 31.10.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот.. сейчас пишу UDF для извлечения куска XML по XPATH..
Какое API у MySQL для индикации ошибок функций:

Цитата

 To indicate an error return in the main function, set *error to 1:

*error = 1;

If xxx() sets *error to 1 for any row, the function value is NULL for the current row and for any 

subsequent rows processed by the statement in which XXX() was invoked


т.е. если UDF обнаружила ошибку (например неверный формат) на какой либо строке, то мы ставим *err = 1
но MySQL(!) это инетерпретирует как возврат NULL для данной и последующих строк (или вообще пустой строки
если функция объявлена как не возвращающая NULL). Логично, не правда ли ?


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
zav74
Дата 4.12.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет! Некоторое время назад я решил перевести комплекс MFC-программ с Sybase 5.0(очень уж старая) на MySQL. Принцип работы - устанавливается сервер, далее через мое приложение пользователь создает БД и работает с ней. Но до сих пор у меня это сделать не получилось. Моя задача создать из шаблона пустую БД со всеми процедурами и триггерами. Но в  MySQL не получается. Напрямую как в Postgres нет возможностей. Если через скрипты, тоже сложно. Одна из проблем заключается в создании процедур, с DELIMITER. Никак не получается создать из приложения процедуру через ODBC, а через libmysql.dll только по одной. Проблема с удалением-верхная таблица имеет две подчиненные с которыми сзязь del©, но эти таблицы связаны между собой del®. С этом случае как повезет, может дать удалить, а может и нет. Пробовал решить эту проблему при помощи триггера, не вышло из-за ограничений у триггера. Еще в одной версии надо ставить (;) в другой нет. Ходя СУБД уже много лет в эксплуатации, но мелочные проблемы остались. Вот и склоняюсь теперь в сторону Postgres-там этих проблем не наблюдал, а точнее я вообще никаких странностей не видел.
Хотя может MySQL не для этих целей.
PM MAIL   Вверх
Бонифаций
Дата 5.12.2008, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(zav74 @  4.12.2008,  11:11 Найти цитируемый пост)
. Если через скрипты, тоже сложно. Одна из проблем заключается в создании процедур, с DELIMITER. Никак не получается создать из приложения процедуру через ODBC, а через libmysql.dll только по одной


CLIENT_MULTI_STATEMENTS не забыл поставить при открытити соединения?



Цитата(zav74 @  4.12.2008,  11:11 Найти цитируемый пост)
Еще в одной версии надо ставить (;) в другой нет.


Куда ставить? это ты о чем?

Цитата(zav74 @  4.12.2008,  11:11 Найти цитируемый пост)
ostgres-там этих проблем не наблюдал, а точнее я вообще никаких странностей не видел


ну значит все впереди  smile , когда на первую граблю - кодировки и collate наткнешься - напиши..


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
zav74
Дата 5.12.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



При использовании CLIENT_MULTI_STATEMENTS функции стали записываться и таблицы, но не ссылки
Код

alter table child add constraint FK_Reference_110 foreign key (child_un)
      references objects (objects_un) on delete cascade on update cascade;

их опять только по одной.
Да и в ODBC - CLIENT_MULTI_STATEMENTS не поможет. Просто переводимое приложение на ODBC работает, поэтому тестовый вариант хотелось бы на нем сделать. А насчет (;), я в форуме нашел, что в конце процедуры в одной версии надо ставить, в другой нет.
PM MAIL   Вверх
sir_nuf_nuf
Дата 6.12.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Бонифаций @  5.12.2008,  04:43 Найти цитируемый пост)
ну значит все впереди  smile , когда на первую граблю - кодировки и collate наткнешься - напиши.. 

Бонифаций, а какие еще грабли PostgreSQL на вскидку вспомните ?
Там какжется какая-то нетривиальная репликация ?


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
sandello
Дата 4.1.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(grep2 @  28.10.2008,  22:31 Найти цитируемый пост)
в которой столько ограничений

Типа, в оракле и посгерсе их нет? Так ты их или не знаешь или они тебя устраивают. У любой вещи есть область применения. Если вещь (mysql) подходит для твоей задачи - используй. Если нет - используй другую. В противном случае можно и до забивания гвоздей микроскопом дойти.
В любом случае, mysql не самая простая софтина. И её документацию стоит изучить. Подводных камней там мнооого smile К примеру, преобразование типов на лету и втихаря.

Цитата(sir_nuf_nuf @  30.10.2008,  17:38 Найти цитируемый пост)
хранимки на SQL... Но ведь они не удобные!

Не удобно штаны через голову одевать © не мой.
Тебе не удобно делать что-то конкретное? Т.е. какую-то задачу очень не просто решить в mysql но очень просто - в оракле? Тогда вычисляй стоимость неудобства и если она высока - покупай оракл. Если нет - используй то, что есть.

Вообще, спор «удобно/неудобно» довольно бестолковое занятие, какие-то сферические кони в вакууме. Речь может идти или о конкретных особенностях, или о решении конкретных задач.

Цитата(sir_nuf_nuf @  30.10.2008,  17:38 Найти цитируемый пост)
2) UDF MySQL - что мы можем ? писать функции и агрегатные функции. с API для UDF сейчас работаю - поэтому могу сказать - не слишком удобное. Практический пример: как сообщить юзеру о ошибке при выполнении UDF функции (на конкретной строке) ? 
3) с UDF API Postgresql побогаче: помимо функций, агрегаток, есть свои типы и операторы. 
4) В Postgres есть API для написания хранимок на куче языков (!) Как вам вызывать perl функции и SQL запросов ? 

Тебе это все нужно? Тогда используй PostgreSQL. Зачем полез в MySQL?

Цитата(sir_nuf_nuf @  30.10.2008,  19:18 Найти цитируемый пост)
MySQL - это крутой storage. Но не более

Ну так и используй его для этого. «Белаз - огромный грузовик. Но, блин, за грибами на нем ездить не удобно.» - ничего не напоминает?
Тебя, кстати, не смущает, что в оракле varchar не стоит использовать? 


--------------------
user posted image
PM MAIL Jabber   Вверх
zav74
Дата 10.1.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну про Белаз сравнение не совсем корректное. Все автомобили должны ездить, заправляться доступным топливом и т.д. Далее уже есть тонкости грузоподъемность, скорость, удобство наконец. А когда в СУБД есть функции и они работают-этому нет оправдания. Тогда уж надо их вообще исключать. Я вот уже несколько месяцев с MySql мучаюсь(модернизирую структуру и меняю СУБД), уже структуру БД изменил, приложения переписал и т.д. Но вот постоянно возникает какая то неочевидная засада. Последняя из них - функции не записываются в файл при выполнении mysqldump. Вот таблицы с ссылками создаются, а функции нет. Это все равно что заехал на Белазе в карьер, загрузился, а оказывается задняя передача не работает и тебе предлагают на Камаз пересесть. Надеюсь, у меня хватит терпения добить этот проект и не менять СУБД, хотя в принципе мои требования должна выполнять любая реляционная СУБД.
PM MAIL   Вверх
Бонифаций
Дата 10.1.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(zav74 @ 10.1.2009,  11:42)
Последняя из них - функции не записываются в файл при выполнении mysqldump. Вот таблицы с ссылками создаются, а функции нет. 

Да ну! не записываются?? а документацию пробовал читать? например про ключик --routines ? Или про бэкап mysql.proc ?

Читаем



--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
sandello
Дата 11.1.2009, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(zav74 @  10.1.2009,  14:42 Найти цитируемый пост)
Я вот уже несколько месяцев с MySql мучаюсь

Ты так и не пояснил, на кой черт это тебе запонадобилось?

Цитата(zav74 @  10.1.2009,  14:42 Найти цитируемый пост)
структуру БД изменил

А это зачем?


--------------------
user posted image
PM MAIL Jabber   Вверх
zav74
Дата 11.1.2009, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Да ну! не записываются?? а документацию пробовал читать? например про ключик --routines ? Или про бэкап mysql.proc ?

бэкап mysql.proc - взять то можно, только вот правильно ли это, да и записывать как то сложно. А вот про --routines - не слышал, и гугле ничего не нашел, может быть и найдется решение, но они все так спрятаны. Это вот четвертая СУБД-где что-то большое делаю, но пока трудозатраты здесь на порядок больше и приходится огороды некрасивые городить. 

Цитата

Ты так и не пояснил, на кой черт это тебе запонадобилось?

Просто очередная модернизация комплекса. Структуру поменял не из-за MySql, а из-за модернизации. СУБД у меня была очень старая-Sybase SQL 5.0. Модернизированный комплекс предполагает возможность работы в Win и Linux. У меня есть опыт работы с Postgres, хотел еще и MySql попробовать и выкатить в опытную эксплуатацию. Я это написал к тому, что уже успел сделать кучу работы(переписаны сотни запросов, форм вводов, расчетов и т.д.), а стопорюсь постоянно на какой то фигне-это и раздражает. Если придется бросить MySql-то в Postgres, я думаю, все сделать за несколько недель-структуру уже менять не надо. Но вот хочется все таки закончить в MySql.
PM MAIL   Вверх
sandello
Дата 11.1.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



smile Честно говоря, задача не понятная. Судя по твоим постам, с PostgreSQL у тебя было бы все значительно быстрее. Тогда и надо было с ним работать. Или речь идет не промышленном комплексе, дома тренируешься? Ты готов потратить кучу времени непонятно ради какого результата. Ну, это не касается баз данных smile

В MySQL большинство затребованных тобой возможностей появились сравнительно недавно. MySQL v3 вообще не имел хранимок, да и реляционный движок появился тоже не сильно давно. Т.е. система выросла из очень простых задач, которые она успешно решала. Теперь постепенно наращивает функционал.

Цитата(zav74 @  11.1.2009,  13:46 Найти цитируемый пост)
А вот про --routines - не слышал, и гугле ничего не нашел, может быть и найдется решение, но они все так спрятаны.

Дока, она не только в гугле  smile 
Код

$ mysqldump --help|grep procedure
  -R, --routines      Dump stored routines (functions and procedures).



--------------------
user posted image
PM MAIL Jabber   Вверх
zav74
Дата 11.1.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Судя по твоим постам, с PostgreSQL у тебя было бы все значительно быстрее

Система уже много лет используется в разных городах. Главная задача была усовершенствовать структуру, сделать нормальный сервер БД и сделать конвертацию из старых БД. Времени и возможностей много разъезжать нет, поэтому многие функции администрирования БД хотел бы реализовать через свой интерфейс-чтобы пользователи смогли справиться. После всех структурных изменений-не так важно на какой СУБД работаешь, переход не будет болезнен, вот и захотел опробовать MySql. Мой кстати первый вопрос и был-стоит ли использовать MySql. 

Цитата

Дока, она не только в гугле   

Спасибо. Я вот это уже нашел-вроде работает.
PM MAIL   Вверх
Бонифаций
Дата 11.1.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(zav74 @ 11.1.2009,  10:46)
 А вот про --routines - не слышал, и гугле ничего не нашел, может быть и найдется решение, но они все так спрятаны. 

В каком смысле спрятаны? Какой еще гугл?  Я же ссылку даже привел - в документации все прекрасно описано..


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
zav74
Дата 11.1.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

В каком смысле спрятаны? Какой еще гугл?  Я же ссылку даже привел - в документации все прекрасно описано.


Я уже нашел и написал чуть выше
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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