无法使用 pyodbc 将 jpeg 插入 filemaker 数据库:HY011 ODBC 错误

unable insert jpeg into filemaker db with pyodbc : HY011 ODBC Error

我在尝试将 JPEG 插入 FileMaker 14 数据库时遇到此 odbc 错误。当我 运行 针对 MySQL 插入 blob 的相同脚本时,没有错误。插入文本字段不会产生错误。 我也不知道,也找不到对 odbc 错误 HY011 有意义的解释...

有人可以帮忙吗?提前致谢!

交互式输入代码时的输出:

Python 2.7.9(默认值,2014 年 12 月 13 日,15:13:49) [GCC 4.2.1 兼容 Apple LLVM 6.0 (clang-600.0.56)] on darwin 键入 "help"、"copyright"、"credits" 或 "license" 以获取更多信息。

>>> import pyodbc
>>> with open('Femke.jpg', 'rb') as f:
...  data = f.read()
... 
>>> conn = pyodbc.connect('DRIVER={/Library/ODBC/FileMaker ODBC.bundle/Contents/MacOS/fmodbc.so};SERVER=localhost;DATABASE=testContainer;UID=Admin')
>>> cur = conn.cursor()
>>> cur.execute("insert into testContainer (cont) values (PutAs(?, 'JPEG'))", pyodbc.Binary(data))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pyodbc.Error: ('HY011', '[HY011] [unixODBC][Driver Manager]Attribute cannot be set now (0) (SQLPutData)')
>>> 

这听起来可能有些多余,但我首先要仔细检查目标 FileMaker 字段是否确实定义为容器字段。如果不是,那很容易解释这个错误。您可能还想检查 this FileMaker help document,概述一些 O/JDBC blob 错误消息及其原因。

如果这些都没有帮助,我会检查 FileMaker 数据库中的安全设置,以确保 xDBC 用户有权在目标 table 中创建和编辑记录,并且容器字段设置为也允许这样做。

这是一个完全在黑暗中拍摄的照片,但请尝试更改

cur.execute("insert into testContainer (cont) values (PutAs(?, 'JPEG'))", pyodbc.Binary(data))

cur.execute("insert into testContainer (PutAs(cont,'JPEG')) values (?))", pyodbc.Binary(data))

在 filemaker jdbc/odbc 指南中明确指出它能够通过 JDBC(第 33 页)处理 clob 类型。对于 ODBC,我无法在文档中找到它,所以我想这是 FileMaker ODBC 接口的一个缺点。 我现在使用 JDBC 并且有效。