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

 
Eugeniy Lugovoy:

MT4 build 890 x32 только что проверил. Все работает.

Лог запуска тестовых скриптов:

 Ребята, уточните:

1. На какой операции дает "Access violation read" ?

2. При запуске скрипта MySQL-001 какую версию MQLMySQL показывает на вкладке Experts? должно быть: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory

3. Какая версия базы MySQL?

4. MySQL используется локально или на удаленном хосте?

5. Под какой операционкой запускаете терминал?

Пожалуйста проверьте и отпишитесь, т.к. у себя не могу воспроизвести ошибку.

Я создам аналогичное окружение и протестирую. 

Я использую МТ4 (950). Взял файлы из прикрепленного к статье архива. Я правильно понял, что там не последняя версия?:    MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

Данные из конфиг. файла не читает.

 
Sergey Deynego:

Я использую МТ4 (950). Взял файлы из прикрепленного к статье архива. Я правильно понял, что там не последняя версия?:    MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

Данные из конфиг. файла не читает.

Да, v2.0 это старая. Я в обсуждении статьи уже выкладывал более новые версии.

Прикреплю и сейчас. 

MQLMySQL v2.2 - исходники проекта DLL для x64 и x86

Попробуйте что-то из этого. Там вроде бы последняя версия. 

Файлы:
MQLMySQL_v2.2.zip  4801 kb
MQL4_x32.zip  1073 kb
MQL5_x32.zip  1073 kb
MQL5_x64.zip  1076 kb
 
Eugeniy Lugovoy:

Судя по ошибке, которую я вижу из вашего журнала: 0 11:09:37.742 MySQL-002 EURUSD,H1: Таблица `table` не может быть создана.

Вы используете имя "table", которое является ключевым словом базы данных mysql и не может быть использовано в качестве имени таблицы, попробуйте изменить его, например, на "table1", чтобы проверить, работает ли оно.

Или, возможно, база данных не была выбрана или не была установлена. Вы можете выполнить команду "USE database_name" сразу после подключения, где database_name - это имя вашей базы данных.

Например, если моя база данных - "mysql":

DB = MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);

if (DB ==-1) { Print ("Connection failed! Error: "+MySqlErrorDescription); } else { Print ("Connected! DBID#",DB);}

MySqlExecute(DB, "USE mysql");

Я последовал вашим рекомендациям относительно имени таблиц и команды MySqlExecute(DB, "USE mt4"), но все равно получаю сообщение об ошибке:

0 12:51:40.534 Скрипт MySQL-002new EURUSD,M1: загружен успешно

0 12:51:40.549 MySQL-002new EURUSD,M1: инициализирован

0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , User: , Database:

0 12:51:40.549 MySQL-002new EURUSD,M1: Connecting...

0 12:51:40.565 MySQL-002new EURUSD,M1: Подключено! DBID#0

0 12:51:40.565 MySQL-002new EURUSD,M1: Таблица `test_table` не может быть создана. Error: Aucune base n'a ?t? s?lectionn?e

0 12:51:40.565 MySQL-002new EURUSD,M1: Отключено. Скрипт выполнен!

0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 0

0 12:51:40.565 Скрипт MySQL-002new EURUSD,M1: удален

 

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

Большое спасибо за ваш полезный проект.

Я пытаюсь прочитать строковое поле из таблицы, которое составляет около 3 000 символов, я использовал "MySqlGetFieldAsString" следующим образом:


if (Cursor >= 0)

{

Rows = MySqlCursorRows(Cursor);

for (int i=0; i<Rows; i++)

if (MySqlCursorFetchRow(Cursor))

{

Get_Setting = MySqlGetFieldAsString(Cursor, 4);

}

.....

Но проблема в том, что Get_String возвращает мне только 1025 символов,

А мне нужно прочитать это поле полностью.

Можете ли вы помочь мне решить эту проблему?

С уважением,

 
FX. MDA7:

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

Большое спасибо за ваш полезный проект.

Я пытаюсь прочитать строковое поле из таблицы, которое составляет около 3 000 символов, я использовал "MySqlGetFieldAsString" следующим образом:


if (Cursor >= 0)

{

Rows = MySqlCursorRows(Cursor);

for (int i=0; i<Rows; i++)

if (MySqlCursorFetchRow(Cursor))

{

Get_Setting = MySqlGetFieldAsString(Cursor, 4);

}

.....

Но проблема в том, что Get_String возвращает мне только 1025 символов,

А мне нужно прочитать это поле полностью.

Можете ли вы помочь мне решить эту проблему?

С уважением,

Да, максимальную длину символьных данных я установил на 1024 символа. Я могу изменить это ограничение и перестроить DLL. Кстати, какой тип данных вы используете для этого столбца на стороне db?
 
peg:

Я последовал вашим рекомендациям относительно имени таблиц и команды MySqlExecute(DB, "USE mt4"), но все равно получаю сообщение об ошибке:

0 12:51:40.534 Скрипт MySQL-002new EURUSD,M1: загружен успешно

0 12:51:40.549 MySQL-002new EURUSD,M1: инициализирован

0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , User: , Database:

0 12:51:40.549 MySQL-002new EURUSD,M1: Connecting...

0 12:51:40.565 MySQL-002new EURUSD,M1: Подключено! DBID#0

0 12:51:40.565 MySQL-002new EURUSD,M1: Таблица `test_table` не может быть создана. Error: Aucune base n'a ?t? s?lectionn?e

0 12:51:40.565 MySQL-002new EURUSD,M1: Отключено. Скрипт выполнен!

0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 0

0 12:51:40.565 Скрипт MySQL-002new EURUSD,M1: удален

почему версия"MQLMySQL v2.0"? Должна быть 2.2
 

Отлично!

Использую MQL5 для генерации данных для MQL4.

Все работает замечательно, за исключением того, что мне пришлось убрать одинарные кавычки вокруг tablename в команде запроса

Query ="SELECT Symbol,Composite,Pattern FROM summarytable";

работает нормально

 
Ingvar Engelbrecht:

Отлично!

Использую MQL5 для генерации данных для MQL4.

Все работает замечательно, за исключением того, что мне пришлось убрать одинарные кавычки вокруг tablename в команде запроса

Query ="SELECT Symbol,Composite,Pattern FROM summarytable";

работает нормально

Да, можно использовать без кавычек, если вы не планируете называть таблицы в верхнем/нижнем регистре (mysql чувствителен к регистру) и специальными символами. BTW, это не символ одинарной кавычки "'", а "`".

Поэтому ваш запрос также может быть таким: Query ="SELECT `Symbol`,`Composite`,`Pattern` FROM `summarytable`";

если вы хотите назвать столбцы Symbol, но не symbol или SYMBOL

 

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

Спасибо за ваш модуль, очень полезный. Не могли бы вы помочь добавить функцию для получения имени поля? Или как я могу добавить ее в VC++?

 

как вы!

Система win10 64x, Невозможно подключиться к базе данных, вы можете мне помочь?