linux访问access
2024-01-11 本文已影响0人
哈哈新开张
借助 mdbtools
-
yum install mdbtools mdbtools-devel
后目录中没有/usr/lib64/libmdbodbc.so这个文件,有libmdb.so.2 libmdb.so.2.0.1 libmdbsql.so.2 libmdbsql.so.2.0.0,
最后使用手动编译安装解决 下载地址 https://github.com/mdbtools/mdbtools
-
yum install unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel automake autoconf
安装驱动和依赖
github下来时可能没有configure文件,需要手动执行autoreconf -i -f
./configure --with-unixodbc --disable-man --with-unixodbc=/usr/local
如果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-devel
再export 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
可出现
/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服务器一直没调试成功,如果需要挂载或复制到本地,不适用于采集场景