linux访问access

2024-01-11  本文已影响0人  哈哈新开张

借助 mdbtools

最后使用手动编译安装解决 下载地址 https://github.com/mdbtools/mdbtools

如果configure是ok的,make报错

mdbsql.c:59:2: error: implicit declaration of function 'vsnprintf' [-Werror=implicit-function-declaration]
  vsnprintf(sql->error_msg, sizeof(sql->error_msg), fmt, ap);
  ^
mdbsql.c: In function 'mdb_sql_strptime':
mdbsql.c:377:3: error: implicit declaration of function 'snprintf' [-Werror=implicit-function-declaration]
   snprintf(pszDate, 16, "%lf", date);
   ………………………………

yum install glibc-develexport CFLAGS="-std=gnu99"
有些系统make完还需 ldconfig,见github

编辑 /etc/odbcinst.ini 文件添加以下内容,以注册 MDBTools 的 ODBC 驱动:

[MDBTools]
Description=MDBTools Driver
Driver=/usr/local/lib/libmdbodbc.so
Setup=/usr/local/lib/libmdbodbc.so
UsageCount=1

编辑 /etc/odbc.ini 文件添加以下内容,以创建一个 DSN(数据源名称)

[mes]
Driver=MDBTools
Database=/var/www/mes/b.accdb

isql -v mes 可出现

1705044200129.png

/var/www/mes/b.accdb 是你自己的数据

PHP代码如下

$dbName = '/var/www/mes/b.accdb';
$dsn = "odbc:Driver=MDBTools;DBQ={$dbName}";

try {
    $pdo = new PDO($dsn);
    echo 'ok';
} catch (PDOException $e) {
    echo "ng " . $e->getMessage();
}

读取本地access可以,网络win服务器一直没调试成功,如果需要挂载或复制到本地,不适用于采集场景

上一篇下一篇

猜你喜欢

热点阅读