使用 odbc_exec libmdb mdbtools 耗尽允许的内存大小

Posted

技术标签:

【中文标题】使用 odbc_exec libmdb mdbtools 耗尽允许的内存大小【英文标题】:Allowed memory size exhausted with odbc_exec libmdb mdbtools 【发布时间】:2018-11-27 11:29:32 【问题描述】:

我想通过 php (7.2.10)、SLE 12.3 连接到我的 MS Access 数据库。为此,我使用了 libmdbodbc1 0.7-3.1 软件包附带的 libmdbodbc.so.1 驱动程序(来源:mdbtools-0.7-3.1)。设置在 unixODBC 配置中完成: /etc/unixODBC/odbcinst.ini.

[MdbToolsOdbc]
Description = MDBTools ODBC Driver
Driver = libmdbodbc.so.1
Setup = libmdbodbc.so.1

可以通过命令行(isql)连接数据库并获取数据,并且不会返回错误。

但是当我尝试通过 PHP 执行 SQL 查询时(连接通过:odbc_connect(Driver=MdbToolsOdbc;DBQ=%s, null, null);)

odbc_exec($connection, "SELECT id FROM table");

我收到错误“允许的内存大小为 2097152 字节已用尽(尝试分配 140 字节)”。

这里还是提到了这个问题:

https://github.com/brianb/mdbtools/issues/99

https://bugs.php.net/bug.php?id=75013&thanks=3

有人知道该问题的解决方案或解决方法吗?

很高兴得到一些回应!

谢谢你,最好的!

【问题讨论】:

你可以在这里查看***.com/questions/42132558/… 感谢您的快速回复!我现在安装了 ibm-iaccess-1.1.0.10-1.0.x86_64.rpm。我想连接到 .mdb/.accdb MS Access-File。我怎么能设置这个?仍然尝试了“Driver=IBM i Access ODBC Driver 64-bit;Data Source=%s;System=localhost”(%s 替换为 .mdb/.accdb-File 的路径)和其他参数,但总是得到一个错误,无法建立与数据库的连接。 【参考方案1】:

改用 PDO: https://www.php.net/manual/en/ref.pdo-odbc.php

这适用于我使用与 Filemaker 数据库的连接。

【讨论】:

以上是关于使用 odbc_exec libmdb mdbtools 耗尽允许的内存大小的主要内容,如果未能解决你的问题,请参考以下文章

odbc_exec 执行简单查询需要很长时间

odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 参数太少。预期 1.,SQLExecDirect 中的 SQL 状态 0700

odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)

“调用未定义函数 odbc_exec()”错误连接到 Linux PHP 服务器上的 Access 数据库

php随机访问

php 链接access数据库