在PHP中通过ODBC(使用PDO)查询Snowflake返回错误数据
本文介绍了在PHP中通过ODBC(使用PDO)查询Snowflake返回错误数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试通过PHP(CentOS 6和7)中的ODBC驱动程序连接到Snowflake,并使用PDO进行更轻松的访问。
ODBC驱动程序似乎已安装并且工作正常,因为PHP中的本机ODBC函数工作得很好:
退货
这正是我直接查询数据库时得到的结果。
但是当我想使用PDO时,结果变得很奇怪。
退货
注意:Rows: 3
之后没有进一步输出。
因此PDOStatement知道正确的行数,但是SHOW TABLES
的内容不完整,SELECT * FROM TEST
不知何故完全缺失($statement->fetch()
立即返回false
)。
您知道这里是否有任何PDO选项会有帮助?
我还注意到,本例中的原生ODBC函数消耗了大约200MB的内存,这似乎很多。
推荐答案
我们遇到了类似的问题,通过使用Snowflake的PDO,CAST无法正常工作。
异常‘PDOException’,消息为‘SQLSTATE[SL009]:<;>:0[unixODBC][驱动程序管理器]之前没有绑定任何列 调用SQLFetch或SQLFetchScroll
长话短说,在与Snowflake Support交换了几封电子邮件后,我们发现Snowflake不支持PDO。
目前,我们不支持由于某些问题而导致的PHP PDO 由于字符串/VARCHAR类型和列大小的绑定而找到 16M字节。这是一个决定,不会在可支持性方面取得进展。 您可以继续将PHP与ODBC一起使用,但是,我们可能无法 在问题/错误出现时解决它们。
所以您最好的选择是使用PHP中的原生odbc_*
系列函数(这就是我们正在做的)。
这篇关于在PHP中通过ODBC(使用PDO)查询Snowflake返回错误数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!