Обсуждение статьи "Работа с сетевыми функциями, или MySQL без DLL: Часть II - программа для мониторинга изменения свойств сигналов" - страница 3

 
Я пока что вообще не смог подключиться к MySQL 8.0.23 (ошибка 1045: "access denied for user ... ").
из GUI не можете?
 

По поводу ошибки в строке (367, 37) - странно. Поставить бы там проверку с брейкпойнтом, посмотреть на значения переменных. У меня эта библиотека работает круглосуточно не первый год, запросы каждые 30 секунд (не короткие, с данными). И ни разу не падала. Знать бы, какой запрос её сносит.



Непросто воспроизвести.
 
2022.02.19 13:09:10.266      array out of range in 'MySQLTransaction.mqh' (471,11)


 

2022.02.19 13:22:44.346 array out of range in 'MySQLTransaction.mqh' (501,11)



 

2022.02.19 14:24:31.882         CMySQLTransaction::PacketDataHandler: m_responses=1
2022.02.19 14:24:31.882         array out of range in 'MySQLTransaction.mqh' (502,11)

 

Вот еще в лог вывел размер массива. В общем, где-то он не изменяется правильно или m_responses неверное...

2022.02.19 14:28:59.455         CMySQLTransaction::PacketDataHandler: m_responses=1
2022.02.19 14:28:59.455         CMySQLTransaction::PacketDataHandler: m_rbuf size=1
2022.02.19 14:28:59.455         array out of range in 'MySQLTransaction.mqh' (503,11)


Сделал расширение массива вручную при необходимости до m_responses+1. 

 
bool CMySQLTransaction::Query(string q)

Еще и 5273 ошибка здесь вылетает. Непонятно пока, как с этим работать.

 
ENUM_TRANSACTION_STATE CMySQLTransaction::Incoming(uchar &data[], uint len)
  {
   int ptr=0; // индекс текущего байта в буфере data
   ENUM_TRANSACTION_STATE result=MYSQL_TRANSACTION_IN_PROGRESS; // результат обработки принятых данных
   while(len>0)
     {
      if(m_packet.total_length==0)
        {
         //--- Если неизвестно количество данных в пакете
         while(m_rcv_len<4 && len>0)
           {
            m_hdr[m_rcv_len] = data[ptr];
            m_rcv_len++;
            ptr++;
            len--;
           }
Ещё и здесь вылетает с array out of range.
 
leonerd #:
из GUI не можете?

у меня 8.0.32

под root пользователем пишет

Transaction Error: MYSQL_ERR_AUTHORIZATION_TIMEOUT

создал abcd пользователя, пишет:

MySQL Server Error: 1045 (Access denied for user 'abcd'@'localhost' (using password: YES))
 
У меня проблемный массив вне допустимого диапазона в 'MySQLPacketReader.mqh' (344,21)
Произошло это после обновления до последней сборки 3759, предыдущая в порядке.
Я вижу, что проблема возникает с SocketRead.
Кто-нибудь прошел через это?

в буй