Обсуждение статьи "Работа с СУБД MySQL из MQL5 (MQL4)" - страница 13

 
Pavel Kolchin:

win 7 x64 - mt5 x64 последней версии (v5 b1455)

до MySQL не доходит, но не жалко

Сервер: Localhost via UNIX socket

Тип сервера: Percona Server

Версия сервера: 5.5.35-33.0-log - Percona Server (GPL), Release rel33.0, Revision 611

Версия протокола: 10

Пользователь: ***

Кодировка сервера: UTF-8 Unicode (utf8)

в mql4 работает
Ошибку воспроизвел. Буду решать...
 

Вот для MQL5 перекомпилил x64

Павел попробуйте.

Файлы:
MQL5_x64.zip  1412 kb
 
Eugeniy Lugovoy:


проблем с подключением dll'ок больше нет

всё работает, спасибо

 
Pavel Kolchin:

проблем с подключением dll'ок больше нет

всё работает, спасибо

Всегда рад помочь.

Удачи Вам в проектах

 
Yuriy Asaulenko:

Спасибо, прочитал. Там оч дельное замечание автора текущей статьи, который пришел,... и все испортил.)


Сам сталкивался не раз с проблемой коллизий на ней. Скажем, если торговый робот прикреплен к различным чартам, а использует одну базу, причем обращение происходит к одной таблице общего назначения (скажем регистрация/изменение сессий, аккаунтов), то в любом случае вы получите ошибку типа "таблица заблокирована". И не важно что транзакции все завершены, курсоры все закрыты и БД открыта была в shared режиме.


Комментатор наверно не разбирался в настройках sqlite, которые все коллизии разрешают через компилирование для режим с локами или через pragma.

Со своей колокольни могу сказать что я несколько лет на тяжеловесных проектах с одновременным чтением/записью многопоточно - и нет никаких проблем, главное чтоб руки были прямые.

 
o_O:

Комментатор наверно не разбирался в настройках sqlite, которые все коллизии разрешают через компилирование для режим с локами или через pragma.

Со своей колокольни могу сказать что я несколько лет на тяжеловесных проектах с одновременным чтением/записью многопоточно - и нет никаких проблем, главное чтоб руки были прямые.

o_O

Если что я могу поднять тот проект для SQLite, написать тестовые скрипты/EA и если будут снова локи, то можем вместе разобраться (если Вы не против) и предоставить программное решение сообществу.

Возможно стоит уделить этому внимание т.к. есть некоторые преимущества бд (автономность, SQL, мобильность, встраиваемость и т.п.). 

По факту, я брал готовую DLL от SQLite (не исходники) и ее не перекомпиливал, а просто работал с С++ API.

 
Eugeniy Lugovoy:

o_O

Если что я могу поднять тот проект для SQLite, написать тестовые скрипты/EA и если будут снова локи, то можем вместе разобраться (если Вы не против) и предоставить программное решение сообществу.

Возможно стоит уделить этому внимание т.к. есть некоторые преимущества бд (автономность, SQL, мобильность, встраиваемость и т.п.). 

По факту, я брал готовую DLL от SQLite (не исходники) и ее не перекомпиливал, а просто работал с С++ API.

Было бы действительно интересно, если бы "миф" о локировании SQLite был бы подтвержден или развеян. Если бы не эта неопределенность, или решения ее устраняющие, то SQlite оч привлекательный вариант взаимодействия. Интересно было бы узнать также что либо о ее быстродействии, например по сравнению с одинаковой базой с Access. Разумеется, если у кого либо найдется реальное время и желание проделать такую работу.

Возникают правда еще вопросы подключения базы к стороннему ПО, которое можно подключить к любой БД - Access, SQL Server, Oracle и пр. Имеется ли в SQLite драйвер, устанавливаемый на компьютер типа OLEDB или хотя бы ODBC? Причем в тот-же Access несколько приложений могут писать-читать в одну и ту же БД асинхронно через различные интефейсы без каких либо проблем. Подозреваю. что с SQLite это может не прокатить.

 
Yuriy Asaulenko:

Было бы действительно интересно, если бы "миф" о локировании SQLite был бы подтвержден или развеян. Если бы не эта неопределенность, или решения ее устраняющие, то SQlite оч привлекательный вариант взаимодействия. Интересно было бы узнать также что либо о ее быстродействии, например по сравнению с одинаковой базой с Access. Разумеется, если у кого либо найдется реальное время и желание проделать такую работу.

Возникают правда еще вопросы подключения базы к стороннему ПО, которое можно подключить к любой БД - Access, SQL Server, Oracle и пр. Имеется ли в SQLite драйвер, устанавливаемый на компьютер типа OLEDB или хотя бы ODBC? Причем в тот-же Access несколько приложений могут писать-читать в одну и ту же БД асинхронно через различные интефейсы без каких либо проблем. Подозреваю. что с SQLite это может не прокатить.

Ну OLEDB для SQLite есть, достаточно погуглить. Кстати интересная идея прогнать тестовые скрипты по поводу лока через OLEDB к SQLite... изврат конечно, но все мы здесь извращенцы...

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

 
Eugeniy Lugovoy:

Ну OLEDB для SQLite есть, достаточно погуглить. Кстати интересная идея прогнать тестовые скрипты по поводу лока через OLEDB к SQLite... изврат конечно, но все мы здесь извращенцы...

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

У меня есть приложение создающее БД и пишущее (не читающее) в нее большие объемы информации во многие таблицы. Если удастся найти OLEDB драйвер устанавливаемый на компьютер и видимый через настройки приложения, то SQLite можно легко протестировать на отсутствие зависаний. Аналогичным образом можно подключить к SQLite тот-же Access и попробовать параллельно читать и изменять таблицы. Что-то измерить, разумеется, не удастся.

Посмотрел инет. С ходу такой OLEDB провайдер обнаружить не удалось. Все больше OLEDB DLL, которые можно использовать только из языков программирования, насколько я понял.

 

начало постоянно вылазить, что значит?

 

при выполнении моего кода в этой строчке

if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}

res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);