我使用oracle 11G和OJDBC6.jar适配器。当我尝试运行这个非常简单的insert语句时,它会抛出一个无效的字符异常。
ActiveRecord::JDBCError: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
: insert into user_defaults values (8526547125,'H214Qa99547')
我的gemfile如下:
gem 'activerecord', '4.0.4'
gem 'ActiveRecord-JDBC', '0.5'
gem 'activerecord-jdbc-adapter', '1.3.6'
这是在Oracle 11g上使用OJDBC6.jar
答案 0 :(得分:1)
这可能与推断的列顺序有关吗?尝试指定列以消除任何歧义:
INSERT INTO user_defaults (user_id, home_office_id)
VALUES (8526547125, 'H214Qa99547')
答案 1 :(得分:0)
答案 2 :(得分:0)
过去,我被超出范围的ASCII刻录了。最好排除这一点,特别是如果你已经尝试过其他你能想到的事情。
删除并重新键入整行。删除后删除粘贴线的诱惑。如果那里有一个不可打印的ASCII字符,它将摆脱它。
确保对与SQL语句交互的任何代码行执行此操作,无论是在变量中构建字符串还是实际传递参数以运行查询。
答案 3 :(得分:0)
在数据库配置文件中添加此行statement_escape_processing: true
,如下所示。这应该排序问题
development:
adapter: jdbc
driver: oracle.jdbc.OracleDriver
statement_escape_processing: true