Foros del Web » Programando para Internet » PHP »

Error conectando con fichero MDB de Access (dsn-less)

Estas en el tema de Error conectando con fichero MDB de Access (dsn-less) en el foro de PHP en Foros del Web. Hola! Estoy intentando conectarme con una base de datos Access (fichero .mdb) y no hay manera. El sistema es un Fedora Core 10. He instalado ...
  #1 (permalink)  
Antiguo 21/07/2009, 11:00
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 18 años, 10 meses
Puntos: 6
Pregunta Error conectando con fichero MDB de Access (dsn-less)

Hola!

Estoy intentando conectarme con una base de datos Access (fichero .mdb) y no hay manera. El sistema es un Fedora Core 10. He instalado la librería unixODBC para poder acceder por ODBC a la base de datos y también he activado el soporte ODBC en el PHP.

Así, el PHP me encuentra correctamente la función odbc_connect(), por tanto descarto, en principio, problemas de librerías.

La conexión ha de ser DSN-less porque, como ya he dicho, se trata de un sistema linux, no windows. De momento, el fichero MDB lo he puesto en el mismo directorio que el script PHP: sólo estoy intentando que funcione la conexión.

Pues lo he probado de múltiples formas, estoy buscando en google (he encontrado algunos tópicos de este mismo foro, pero están todos "caducados"). El código que utilizo para probar la conexión es este:

Código php:
Ver original
  1. $mdbFilename = realpath('fichero.MDB');
  2. $user = '';
  3. $password = '';
  4. $odbc = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename;", '', '');
  5. if (!$odbc) {
  6.     echo "ERROR";
  7. } else {
  8.     echo "ODBC Connection OK!!!!";
  9.     odbc_close($odbc);
  10. }

NOTA: La extensión ".MDB" está en mayúscula porque así se llama el fichero. No es un error ;)

El mensaje de error es el siguiente:

18:43:18 [WARNING] /test-odbc/test1.php(17): odbc_connect() [function.odbc-connect]: SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect

Eso de "Data source name not found" no lo entiendo... En teoría estoy utilizando una conexión dsn-less. El único driver que he encontrado para access es el que aparece "Driver={Microsoft Access Driver (*.mdb)}".

¿Alguna idea?

Gracias ;)
  #2 (permalink)  
Antiguo 21/07/2009, 12:08
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Error conectando con fichero MDB de Access (dsn-less)

¿Has intentado darle permisos de escritura al archivo mdb?, sin acceso de escritura no podrás grabar en la base de datos.
  #3 (permalink)  
Antiguo 21/07/2009, 12:29
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 18 años, 10 meses
Puntos: 6
OK. En cuanto pueda le echo un vistazo a los permisos

Gracias ;)

Pues no... He probado de darle permisos "a saco" al fichero, y no. Habrá que continuar investigando ....

Bueeeno.... De momento he conseguido hacer la conexión en Windows. Lo que no consigo es realizar la conexión en linux (el servidor es un linux). Así que..... Una posible solución: ¿web services? para conectar la aplicación en linux y la BD en windows ¿? No sé, ya veremos.

Por cierto, os dejo la parte de odbc de la salida del phpinfo (en linux):

odbc
ODBC Support enabled
Active Persistent Links 0
Active Links 0
ODBC library unixODBC
ODBC_INCLUDE -I/usr/include
ODBC_LFLAGS -L/usr/lib
ODBC_LIBS -lodbc

Directive Local Value Master Value
odbc.allow_persistent On On
odbc.check_persistent On On
odbc.default_cursortype Static cursor Static cursor
odbc.default_db no value no value
odbc.default_pw no value no value
odbc.default_user no value no value
odbc.defaultbinmode return as is return as is
odbc.defaultlrl return up to 4096 bytes return up to 4096 bytes
odbc.max_links Unlimited Unlimited
odbc.max_persistent Unlimited Unlimited

Última edición por GatorV; 22/07/2009 a las 10:12
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:12.