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

 
Maxim Kuznetsov:

попробуйте подключаться под другими реквизитами. То есть c другими login/pass для MySQL. То есть завести там ещё один логин с соотв.правами на базу.

и работать в транзакционном режиме. 


создал нового пользователя, пробовал подключится под его реквизитами, не помогло!

 
Dmitry Melnichenko:

создал нового пользователя, пробовал подключится под его реквизитами, не помогло!

тогда маловероятно что это проблема MySQL или организации базы, то есть явно некий баг или в советнике/скрипте или интерфейсной библиотеке.

Вы можете свести пример где сие проявляется к минимуму ? чтобы можно было продемонстрировать короткий код, и тут в ветке форума выяснять его проблемы

 
Maxim Kuznetsov:

тогда маловероятно что это проблема MySQL или организации базы, то есть явно некий баг или в советнике/скрипте или интерфейсной библиотеке.

Вы можете свести пример где сие проявляется к минимуму ? чтобы можно было продемонстрировать короткий код, и тут в ветке форума выяснять его проблемы

if(connect >= 0)
   {
      string sql = SelectNewOrdersSQL();
      
      int Cursor1 = MySqlCursorOpen(connect, sql);
      
      if(Cursor1 >= 0)
      {
         int Rows = MySqlCursorRows(Cursor1);
         
         for(int i = 0; i < Rows; i++)
         {
            ResetLastError();
            
            if(MySqlCursorFetchRow(Cursor1))
            {
               int ticket = MySqlGetFieldAsInt(Cursor1, 0);
               string s = MySqlGetFieldAsString(Cursor1, 1);
               int order_type = MySqlGetFieldAsInt(Cursor1, 2);
               double lot = MySqlGetFieldAsDouble(Cursor1, 3);
               double open_price = MySqlGetFieldAsDouble(Cursor1, 4);
               
               string symbol = GetSymbol(s);
               
               Print(ticket);
               
               int digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
               int open_ticket = -1;
               if((open_ticket = OrderSend(symbol, order_type, NormalizeDouble(lot, 2), NormalizeDouble(open_price, digits), 150, 0, 0, (string)ticket)) <= 0)
               {
                  Print(symbol, ": не удалось открыть позицию. Ошибка ", GetLastError());
               }
               else
               {
                  MySqlExecute(connect, SqlModifyClient(ticket, open_ticket));
               }
            }
         }
         
         MySqlCursorClose(Cursor1);
      }
   }
string SelectNewOrdersSQL()
{
   string res = "SELECT Ticket, Symbol, OrderType, Lot, OpenPrice, StopLoss, TakeProfit ";
   res += "FROM orders (WHERE Client2 = 0 AND HistoryMaster = 0 AND Account = " + (string)MasterAccount;
   res += " AND Magic = " + (string)MasterMagic + ")";
   
   return res;
}
 
а у вас MQL4 или 5 ??
 
Maxim Kuznetsov:
а у вас MQL4 или 5 ??
MQL4
 
Dmitry Melnichenko:
MQL4
и ошибка только при закрытии курсора, то есть все записи выдёргиваются нормально, а в конце выскакивает такая ерунда?
 
Maxim Kuznetsov:
и ошибка только при закрытии курсора, то есть все записи выдёргиваются нормально, а в конце выскакивает такая ерунда?
да, пишет что количество выбранных строк(выводил в Print), но при закрытии курсора пишет такую ошибку
 

Приветствую всех.

Я только начинаю позновать MQL4.


Возникла проблема. Скрипт падает и ругаеться

019:53:51.456MySQL-003 EURUSD,Monthly: initialized

119:53:51.456Cannot call '..\libraries\MQLMySQL.dll::cMySqlVersion', DLL is not allowed

119:53:51.456MySQL-003 EURUSD,Monthly: unresolved import function call

019:53:51.456MySQL-003 EURUSD,Monthly: uninit reason 0

019:53:51.464Script MySQL-003 EURUSD,Monthly: removed


я так понимаю что проблема кроеться здесь? -> 119:53:51.456Cannot call '..\libraries\MQLMySQL.dll::cMySqlVersion', DLL is not allowed


В чем может быть проблема, подскажите пожалуйста.


Файлы размещены следующим образом:


..\include\MQLMySQL.mqh

..\libraries\libmysql.dll MQLMySQL MQLMySQL.dll

..\scripts\MyConnection.ini MySQL-00*.mq4


OS Windows 10 x64

 

starticys:

119:53:51.456Cannot call '..\libraries\MQLMySQL.dll::cMySqlVersion', DLL is not allowed

Проверьте для начала, разрешён ли импорт DLL : Сервис - Настройки - Советники, в соответствующей строке должна стоять галочка.


 
Sergey Kolemanov:

Проверьте для начала, разрешён ли импорт DLL : Сервис - Настройки - Советники, в соответствующей строке должна стоять галочка.


Спасибо. Пошел дальше страдать)
Причина обращения: