Discusión sobre el artículo "Trabajo con el SGBD MySQL desde MQL5 (MQL4)" - página 9

 
Eugeniy Lugovoy:

MT4 build 890 x32 acaba de comprobar. Todo funciona.

Registro de ejecución de scripts de prueba:

Chicos, por favor aclaren:

1. En qué operación da"Violación de acceso leer" ?

2. Cuando se ejecuta el script MySQL-001, ¿qué versión de MQLMySQL se muestra en la pestaña Expertos? Debería ser: MQLMySQL v2.2 x32 Copyright © 2014, Laboratorio FxCodex.

3. ¿Qué versión de base de datos MySQL?

4. ¿Se utiliza MySQL localmente o en un host remoto?

5. Bajo qué sistema operativo se ejecuta el terminal?

Por favor, compruébalo e infórmame, ya que no puedo reproducir el error.

Voy a crear un entorno similar y probar.

Estoy utilizando MT4 (950). Tomé los archivos del archivo adjunto al artículo. ¿He entendido bien que no es la última versión?: MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratorio.

No lee datos del archivo de configuración.

 
Sergey Deynego:

Yo uso MT4 (950). Tomé los archivos del archivo adjunto al artículo. ¿He entendido bien que no es la última versión?: MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratorio

No lee datos del archivo config.

Sí, v2.0 es viejo. Ya he publicado versiones más recientes en la discusión del artículo.

Ahora te la adjunto.

MQLMySQL v2.2 - Fuentes del proyecto DLL para x64 y x86

Prueba algo de esto. Parece ser la última versión.

Archivos adjuntos:
MQLMySQL_v2.2.zip  4801 kb
MQL4_x32.zip  1073 kb
MQL5_x32.zip  1073 kb
MQL5_x64.zip  1076 kb
 
Eugeniy Lugovoy:

Según el error que veo en su registro: 0 11:09:37.742 MySQL-002 EURUSD,H1: No se puede crear la tabla `table`.

está utilizando el nombre "tabla" que es la palabra clave de la base de datos mysql y no se puede utilizar como nombre de tabla, intente cambiar por ejemplo a "tabla1" sólo para comprobar si funciona.

Puede ejecutar el comando "USE database_name" justo después de la conexión, donde database_name es el nombre de su base de datos.

por ejemplo si mi base de datos es "mysql":

DB = MySqlConnect(Host, Usuario, Contraseña, Base de datos, Puerto, Socket, ClientFlag);

if (DB ==-1) { Print ("¡Fallo de conexión! Error: "+MySqlErrorDescription); } else { Print ("¡Conectada! DBID#",DB);}

MySqlExecute(DB, "USE mysql");

Bueno, seguí tus sugerencias para el nombre de las tablas y el comando MySqlExecute(DB, "USE mt4") pero sigo recibiendo el mensaje de error:

0 12:51:40.534 Script MySQL-002new EURUSD,M1: cargado con éxito

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

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

0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , Usuario: , Base de datos:

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

0 12:51:40.565 MySQL-002new EURUSD,M1: ¡Conectado! DBID#0

0 12:51:40.565 MySQL-002new EURUSD,M1: No se puede crear la tabla `test_table`. Error: Aucune base n'a ?t? s?lectionn?e

0 12:51:40.565 MySQL-002new EURUSD,M1: Desconectado. ¡Script realizado!

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

0 12:51:40.565 Script MySQL-002new EURUSD,M1: eliminado

 

Hola Eugeniy Lugovoy,

Muchas gracias por su proyecto útil.

Estoy tratando de leer un campo de cadena de una tabla que se trata de 3.000 caracteres, He utilizado "MySqlGetFieldAsString" así:


if (Cursor >= 0)

{

Filas = MySqlCursorFilas(Cursor);

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

if (MySqlCursorFetchRow(Cursor))

{

Get_Setting = MySqlGetFieldAsString(Cursor, 4);

}

.....

Pero el problema es que Get_String me devuelve sólo 1025 caracteres,

Necesito leer ese campo completamente.

¿Pueden ayudarme a resolverlo?

Saludos

 
FX. MDA7:

Hola Eugeniy Lugovoy,

Muchas gracias por su proyecto útil.

Estoy tratando de leer un campo de cadena de una tabla que se trata de 3.000 caracteres, He utilizado "MySqlGetFieldAsString" así:


if (Cursor >= 0)

{

Filas = MySqlCursorFilas(Cursor);

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

if (MySqlCursorFetchRow(Cursor))

{

Get_Setting = MySqlGetFieldAsString(Cursor, 4);

}

.....

Pero el problema es que Get_String me devuelve sólo 1025 caracteres,

necesito leer ese campo completamente.

¿Pueden ayudarme a resolverlo?

Saludos

Sí, la longitud máxima de los datos de caracteres que he establecido en 1024 caracteres. Puedo cambiar este límite y reconstruir la DLL. Por cierto, ¿qué tipo de datos utiliza para esa columna en la base de datos?
 
peg:

Bueno, he seguido sus sugerencias para el nombre de las tablas y el comando MySqlExecute(DB, "USE mt4") pero sigo recibiendo el mensaje de error:

0 12:51:40.534 Script MySQL-002new EURUSD,M1: cargado con éxito

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

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

0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , Usuario: , Base de datos:

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

0 12:51:40.565 MySQL-002new EURUSD,M1: ¡Conectado! DBID#0

0 12:51:40.565 MySQL-002new EURUSD,M1: No se puede crear la tabla `test_table`. Error: Aucune base n'a ?t? s?lectionn?e

0 12:51:40.565 MySQL-002new EURUSD,M1: Desconectado. ¡Script realizado!

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

0 12:51:40.565 Script MySQL-002new EURUSD,M1: eliminado

¿por qué la versión"MQLMySQL v2.0" ? debe ser 2.2
 

¡Excelente!

Usando MQL5 para generar datos para MQL4.

Todo funcionó de maravilla, excepto que tuve que quitar las comillas simples alrededor tablename en el comando de consulta

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

funciona bien

 
Ingvar Engelbrecht:

¡Excelente!

Usando MQL5 para generar datos para MQL4.

Todo funcionó de maravilla, excepto que tuve que quitar las comillas simples alrededor tablename en el comando de consulta

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

funciona bien

Sí, es posible usar sin comillas si no planeas nombrar tablas con mayúsculas/minúsculas (mysql es sensible a mayúsculas/minúsculas) y símbolos especiales. BTW, no es símbolo de comilla simple "'", pero es "`".

Así que su consulta también podría ser: Query ="SELECT `Symbol`,`Composite`,`Pattern` FROM `summarytable`";

si quiere nombrar las columnas Symbol, pero no symbol o SYMBOL

 

Hola Eugeniy,

Gracias por su módulo, muy útil. ¿Podría ayudar a agregar la función para obtener el nombre de campo? o ¿cómo puedo añadir en VC ++?

 

¡como estas !

sistema win10 64x, No se puede conectar a la base de datos, ¿me puede ayudar?