Esta rutina que expongo si la ejecuto sobre mi mysql (localhost corre en windows xp) funciona perfectamente.
Por el contrario si cambio el localhost por otro servidor se cae al realizar un simple select * from tabla, ya que si hago un truncate tabla no produce error alguno y funciona ok....
Aclaro que la ip 192.168.0.221 es de un servidor (linux) y no mi máquina...y esto se produce en dos servidores mysql de dos clientes distintos....
Código de la Función que utilizo:
- Code: Select all Expand view
FUNCTION Conexion()
LOCAL oCon
oCon:=CreateObject("adodb.connection")
oCon:ConnectionString:="DRIVER={MySQL ODBC 3.51 Driver}; SERVER=192.168.0.221; DATABASE=sysworks; UID=usuario;PWD=clave"
oCon:ConnectionTimeout:=3600
oCon:Open()
RETURN oCon
FUNCTION Consulta2(cConsulta, oCon)
LOCAL oDatos, aDatos:=Array(3), oErrorAdo
oDatos:=TOleAuto():New("adodb.recordset")
oDatos:CursorLocation := adUseClient //adUseServer
oDatos:LockType := adLockOptimistic
oDatos:CursorType:=adOpenDynamic
oDatos:Source:=cConsulta
oDatos:ActiveConnection:=oCon
TRY
oDatos:Open()
aDatos[1]:=.T.
aDatos[3]:=oDatos
CATCH oError
FOR EACH oErrorAdo IN oCon:Errors
MsgInfo( "Descripción:"+oErrorAdo:Description+CRLF+;
"Error Nativo:"+Str(oErrorAdo:NativeError)+CRLF+;
"Número Error:"+Str(oErrorAdo:Number)+CRLF+;
"Origen:"+oErrorAdo:Source+CRLF+;
"Estado SQL:"+oErrorAdo:SQLState;
)
NEXT
aDatos[1]:=.F.
END
aDatos[2]:=oCon
RETURN aDatos
Ahora la llamada a la función que no da error:
- Code: Select all Expand view
aDatos:=Consulta2( "TRUNCATE libcomp", Conexion())
aDatos[2]:Close()
Y llamando a la misma función cambiando la orden se cae:
- Code: Select all Expand view
aDatos:=Consulta2("SELECT * FROM LIBCOMP", Conexion())
Ahora si hago esto mismo en localhost pasa sin problemas....qué podrá ser?
He intentado colocando el string de conexión directamente sobre open()
He intentado colocando oDatos:ActiveConnection(oCon)
He intentado con este string de conexión:
- Code: Select all Expand view
oCon:ConnectionString:="Driver={MySQL ODBC 3.51 Driver};Server=192.168.1.221;Port=3306;Database=sysworks;User=usuario;Password=clave;Option=3;"
Anexo la imagen (phpmyadmin) para que vean que la base de datos y la tabla están correctas:
Imagen que indica que el truncate tabla pasó y está lista la aplicación para traspasar las dbf's a las tablas respectivas:
Imagen con el error al realizar el select
Bueno, resulta que mysql en windows no opera igual que en linux, ya que al colocar SELECT * FROM LIBCOMP opera sin problemas en mysql sobre windows, pero SELECT * FROM LIBCOMP se cae en mysql sobre linux. ¿Porqué?...debido a que LIBCOMP no lo interpreta igual en windows que en linux....LIBCOMP tiene que ir en MINÚSCULAS EN LINUX, cosa que igual opera sin problemas en windows.
Recomendación: coloquen todos los comandos íntegramente en minúsculas.
Imagen de la aplicación ahora corriendo sin problemas contra un mysql sobre un linux:
Acá otra imagen más:
Acá la misma aplicación corriendo sobre mysql en windows (localhost de mi notebook)
Miren que probé de todo....tres instalaciones distintas de xharbour, recrear n veces fw...ufff, espero les sirva
Saludos y con dolor de cabeza por este problemilla......jajajajaja
AHORA ME RIO