无法求解cx_oracle.databaseerror:ora-00911:无效字符

发布于 2025-02-06 17:07:30 字数 923 浏览 0 评论 0原文

无法调试无效角色的问题。该查询在数据库编辑器上运行良好,但无法通过Python运行。代码如下:

            print(finalSql)
            print(data)
            cursor.executemany(finalSql, data)

输出:

insert into TEST_MAN (MANUFACTURER,REGISTRY_ID,MFR_DESCRIPTION,STATUS,PARTY_TYPE,CITY,STATE,POSTAL_CODE,PRIMARY_PHONE_NUMBER,PRIMARY_PHONE_EXTENSION,WEBSITE,CONTACT_NAME,GENERAL_INQUIRY_EMAIL,MANUFACTURER_NAME_LONG,MANUFACTURER_ADDRESS,COUNTRY,ADDRESS1,SUPPLIER_NAME,SUPPLIER_EMAIL,SUPPLIER_PHONE_NUMBER,ADDRESS2) values (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21)
[('gxsx-01', '2009', 'gxsx-01 test', 'Active', 'Organization', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')]
Traceback (most recent call last):
  File "/home/dev/main.py", line 53, in <module>
    cursor.executemany(finalSql, data)
cx_Oracle.DatabaseError: ORA-00911: invalid character

Unable to debug the issue for invalid character. The query runs fine on the database editor but not able to run via python. The code is as follows:

            print(finalSql)
            print(data)
            cursor.executemany(finalSql, data)

Output:

insert into TEST_MAN (MANUFACTURER,REGISTRY_ID,MFR_DESCRIPTION,STATUS,PARTY_TYPE,CITY,STATE,POSTAL_CODE,PRIMARY_PHONE_NUMBER,PRIMARY_PHONE_EXTENSION,WEBSITE,CONTACT_NAME,GENERAL_INQUIRY_EMAIL,MANUFACTURER_NAME_LONG,MANUFACTURER_ADDRESS,COUNTRY,ADDRESS1,SUPPLIER_NAME,SUPPLIER_EMAIL,SUPPLIER_PHONE_NUMBER,ADDRESS2) values (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21)
[('gxsx-01', '2009', 'gxsx-01 test', 'Active', 'Organization', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')]
Traceback (most recent call last):
  File "/home/dev/main.py", line 53, in <module>
    cursor.executemany(finalSql, data)
cx_Oracle.DatabaseError: ORA-00911: invalid character

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

枕梦 2025-02-13 17:07:31

这是由于在字符串开始时插入了Bom。我必须指定正确的编码字符集来解决此问题。
请检查 u'\ ufeff'

print(repr(finalSql))

有关详细信息,

insert into OTBI_MANUFACTURERS (\ufeffMANUFACTURER,REGISTRY_ID,MFR_DESCRIPTION,STATUS,PARTY_TYPE,CITY,STATE,POSTAL_CODE,PRIMARY_PHONE_NUMBER,PRIMARY_PHONE_EXTENSION,WEBSITE,CONTACT_NAME,GENERAL_INQUIRY_EMAIL,MANUFACTURER_NAME_LONG,MANUFACTURER_ADDRESS,COUNTRY,ADDRESS1,SUPPLIER_NAME,SUPPLIER_EMAIL,SUPPLIER_PHONE_NUMBER,ADDRESS2) values (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21)'

It was due to BOM being inserted at the start of the string. I had to specify the correct encoding character set to solve this.
For details check u'\ufeff' in Python string

print(repr(finalSql))

Output:

insert into OTBI_MANUFACTURERS (\ufeffMANUFACTURER,REGISTRY_ID,MFR_DESCRIPTION,STATUS,PARTY_TYPE,CITY,STATE,POSTAL_CODE,PRIMARY_PHONE_NUMBER,PRIMARY_PHONE_EXTENSION,WEBSITE,CONTACT_NAME,GENERAL_INQUIRY_EMAIL,MANUFACTURER_NAME_LONG,MANUFACTURER_ADDRESS,COUNTRY,ADDRESS1,SUPPLIER_NAME,SUPPLIER_EMAIL,SUPPLIER_PHONE_NUMBER,ADDRESS2) values (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21)'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文