MySQL+ADO no se comporta igual sobre windows y linux

MySQL+ADO no se comporta igual sobre windows y linux

Postby metaldrummer » Tue Apr 15, 2008 8:46 pm

A ver todo lo que viene a continuación es para que vean lo que me estaba sucediendo y como lo resolví, la idea es ayudar a quien esté igual que como estaba yo.

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  RUN
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  RUN
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  RUN
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  RUN
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:

Image

Imagen que indica que el truncate tabla pasó y está lista la aplicación para traspasar las dbf's a las tablas respectivas:
Image

Imagen con el error al realizar el select
Image

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:
Image

Acá otra imagen más:
Image

Acá la misma aplicación corriendo sobre mysql en windows (localhost de mi notebook)
Image

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
[b]David Lagos S.
Coquimbo-Chile
www.wificafe.cl
webmaster@wificafe.cl[/b]
User avatar
metaldrummer
 
Posts: 113
Joined: Wed Jan 10, 2007 8:43 pm
Location: Coquimbo-Chile

Re: MySQL+ADO no se comporta igual sobre windows y linux

Postby lubin » Wed Apr 16, 2008 3:58 pm

Mi estimado
Gracias por el dato, es un dato mut importante para los que estamos en conexion con el MySql .. Windows y Linux...
Te debemos un dolor de cabeza menosss !!!

Lubin
User avatar
lubin
 
Posts: 450
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 37 guests