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

 

Здравствуйте, я с интересом прочитал этот документ.

Могу ли я задать вам вопрос?

Я хочу знать, как подтвердить соединение с MySQL.

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


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

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


Спасибо.

 

Здравствуйте...

Я написал код на данный момент как показано ниже. 1.

Создайте таблицу, которая имеет запись времени при подтверждении соединения. 2.

Создайте таблицу с временной записью при подтверждении соединения. 2.

Если UpSert будет неудачным, попробуйте пересинхронизировать с MySQL.

Подскажите, пожалуйста, существуют ли какие-нибудь методы для подтверждения соединения.

Подскажите, пожалуйста, существуют ли методы для подтверждения соединения.

//+------------------------------------------------------------------+
//| Проверьте и переподключите соединение с MySQL &nbsp ; & nbsp; |
//+------------------------------------------------------------------+
bool DBAccess::resync(void)
{
    string  qry = "";

    string  update_time = (string)TimeCurrent();

    qry += "INSERT INTO `" + sync_table + "` (id, update_time) ";
    qry += "VALUES (\'sync\', \'" + update_time + "\') ";
    qry += "ON DUPLICATE KEY UPDATE update_time = \'" + update_time + "\';";
    
    if (MySqlExecute(DBID, qry))    { return true; }
    
    echo("[Try] Database has been disconnected. EA will try resynchronization.");

    bool    sync        = syncDB();
    
    if(!sync)   { return false; }

    return true;
}
for the time beingの意味・使い方 - 英和辞典 Weblio辞書
  • ejje.weblio.jp
for the time beingの意味や使い方 当分の間, さしあたり, 目下. - 約1037万語ある英和辞典・和英辞典。発音・イディオムも分かる英語辞書。
 
Есть здесь кто может написать обертку с MQL5 на MS SQL, а также интересует обертка на VOLTDB.
 

Я хотел бы спросить, я не отключал операцию базы данных, но база данных только начинает подключать данные нормальные данные с течением времени, не может напрямую читать информацию базы данных, но нет сообщения об ошибке

Я использую MT4

Файлы:
20180412.log  2067 kb
 
cikahun:

Привет, Ален,

Спасибо большое! Я смог понять, что было не так.

В моем случае брокер дает мне символ валюты со знаком £. Я удалил его, и все работает.

Еще раз спасибо.

Я также сталкиваюсь с этой ошибкой, поскольку мой брокер также суффикс символов с (£). Кто-нибудь знает, почему это вызывает проблему и каково решение? Строка SQL работает нормально при вводе в MYSQL Workbench, но я получаю сообщение "Запрос был пуст" при выполнении запроса через эту библиотеку.
 
Eugeniy Lugovoy:

Спасибо, что уделили время чтению этой статьи. Я также проверил ваш(https://www.mql5.com/ru/code/11114), я нашел подобное решение давно (до MT4 build 600) и мне понравилась идея сделать MQL и MySQL дружественными. Но есть одна вещь, которую я не хочу использовать - это массивы для получения данных из базы данных. Поэтому я создал это решение для использования с MT4 и MT5.

Также я забыл добавить в статью проект на базе x64, так что вы можете скачать его прямо здесь, в обсуждении. В исходниках ничего не менялось, только DLL была перекомпилирована под x64.

Удачи,

Евгений

Здравствуйте Евгений Луговой, спасибо за вашу статью, я использовал x32-based проект в моем (64bit windows с mql5) и у меня была эта ошибка:

2018.06.04 17:58:52.879 MySQL-001 (XAUUSD,H1) Cannot load '..\libraries\MQLMySQL.dll' [126]

, и теперь я пытаюсь использовать ваш проект на базе x64, который вы загрузили на этом форуме, но у меня все еще есть вышеуказанная ошибка.

Я пытался запустить один из скриптов двумя способами,

первый - я поместил dll файлы по этому адресу: ...\MQL5\Libraries

второй я поместил их по этому адресу: C:\Windows\SysWOW64

но ни один из них не сработал.

 

Здравствуйте,Евгений Луговой


Я получаю следующую ошибку, не уверен в чем дело!


Ошибка возникает в файле MQLMySQL.mqh

'StrToInteger' - функция не определена MQLMySQL.mqh 224 10


'StrToDouble' - функция не определена MQLMySQL.mqh 229 10

в следующих строках кода:



int MySqlGetFieldAsInt(int pCursorID, int pField)

{

return (StrToInteger(MySqlGetRowField(pCursorID, pField)))

}


double MySqlGetFieldAsDouble(int pCursorID, int pField)

{

return (StrToDouble(MySqlGetRowField(pCursorID, pField)));

}


С уважением,



 
MetaQuotes Software Corp.:

Опубликована новая статья Как получить доступ к базе данных MySQL из MQL5 (MQL4):

Автор: Евгений Луговой

Здравствуйте, Евгений Луговой,

Во-первых, спасибо, что нашли время сделать этот проект.

Я уже несколько недель ищу, как импортировать/обновить все открытые/закрытые сделки с торгового счета в таблицу MySQL, по возможности в реальном времени. есть ли способ сделать это с помощью вашей библиотеки?

Заранее большое спасибо.

Драгос

 

win2008 или win10 X64

журнал выполнения


2018.09.15 20:10:26.742 MySQL-001 (EURUSD,H1) Cannot load 'C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\ 67381DD86A2959850232C0BA725E5966\MQL5\libraries\MQLMySQL.dll' [193]

2018.09.15 20:10:26.742 MySQL-001 (EURUSD,H1) Cannot call 'ReadIni', '... \libraries\MQLMySQL.dll' не загружен

2018.09.15 20:10:26.742 MySQL-001 (EURUSD,H1) Неразрешенный вызов функции импорта



Помощь SomeBody

 
Eugeniy Lugovoy:
Для платформ x64 используйте следующие библиотеки (с обсуждением)

win2018R2 Или win10 X86


2018.09.15 20:10:26.742 MySQL-001 (EURUSD,H1) Cannot load 'C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\ 67381DD86A2959850232C0BA725E5966\MQL5\libraries\MQLMySQL.dll' [193]
2018.09.15 20:10:26.742 MySQL-001 (EURUSD,H1) Cannot call 'ReadIni', '... \libraries\MQLMySQL.dll' не загружен
2018.09.15 20:10:26.742 MySQL-001 (EURUSD,H1) Неразрешенный вызов функции импорта


????