一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情。
oracle mybatis 插入数据异常
好久不用oracle数据库,简单的插入数据居然出现了问题,后来查看是数据库字段设置为blob会出现问题,下面是错误日志
Cause: java.sql.SQLException: ORA-01465: 无效的十六进制数字
SQL: INSERT INTO SEND_DATA_STATE ( ID, ADDVCD, TM, STATE, PUBLICKEY, PRIVATEKEY, SECRET, CONTENT ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) Cause: java.sql.SQLException: ORA-01465: 无效的十六进制数字
; uncategorized SQLException; SQL state [72000]; error code [1465]; ORA-01465: 无效的十六进制数字 ; nested exception is java.sql.SQLException: ORA-01465: 无效的十六进制数字
原因是在往数据库中,插入BLOB字段时出错。
解决的办法:是先将待插入的Content转化成二进制数据,
- 修改前
<insert id="save">
INSERT INTO SEND_DATA_STATE (ID, ADDVCD, TM, STATE,
<if test="null!=error and ''!=error">
ERROR,
</if>
PUBLICKEY, PRIVATEKEY, SECRET, CONTENT)
VALUES ( #{id}, #{addvcd}, #{tm}, #{state},
<if test="null!=error and ''!=error">
#{error},
</if>
#{publicKey}, #{privateKey}, #{secret}, #{content})
</insert>
- 修改后
sendDataState.setContent(content.getBytes());
<insert id="save">
INSERT INTO SEND_DATA_STATE (ID, ADDVCD, TM, STATE,
<if test="null!=error and ''!=error">
ERROR,
</if>
PUBLICKEY, PRIVATEKEY, SECRET, CONTENT)
VALUES ( #{id}, #{addvcd}, #{tm}, #{state},
<if test="null!=error and ''!=error">
#{error},
</if>
#{publicKey}, #{privateKey}, #{secret}, to_blob(#{content}))
</insert>
下面都是没有‘’出现的莫名其妙异常
在数据库中插入数据是可以,但是mybatis插入就报错,最后发现写的时候是用的 ${},这货给弄的没有 ’, 改为 #{}
Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
SQL: INSERT INTO SEND_DATA_STATE (ID, ADDVCD, TM, STATE, PUBLICKEY, PRIVATEKEY, SECRET, CONTENT) VALUES ( 228697711006846976, 350000, Thu Apr 07 18:10:04 CST 2022, 0, MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDY3k5y9N9609DuMCWv8t+nrmkwme67P+GN9v6gOczOzs7CIRBU+HxzwMafemIsqDm/NFGgZ/fDP6ypl1CAotjxAJiUS+ZQY6XGj8cTfr+kZq7rYk4ljgoo6xztOY2yc1gYGStX7cLleunZI0H9p/1zzl2QhP6JlRxEKRU3OP+lDQIDAQAB, MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANjeTnL033rT0O4wJa/y36euaTCZ7rs/4Y32/qA5zM7OzsIhEFT4fHPAxp96YiyoOb80UaBn98M/rKmXUICi2PEAmJRL5lBjpcaPxxN+v6RmrutiTiWOCijrHO05jbJzWBgZK1ftwuV66dkjQf2n/XPOXZCE/omVHEQpFTc4/6UNAgMBAAECgYBwe52k8m2Xf5W2dTKW+BoZFtVoZ+7zIEcVIy8eW9xmx81l01BtQhUK1MownYGeOAL7sV9FG6felYAw1lLi5ZQvN9fG6bkbcRsNvD1DML9bMv6DPDH8dfn3Xf9BiVvbrlKAsht5jh75i6nzcdXas02y+ALJGmYoqhQxg7pqmlkj4QJBAPOwcpmHLFfrNv/p6SppqvSYpe6R4hAI1ijriVf5byBl4DHI7yfs5s6szHofqDJm4bn1af4rNo3MUfCwWJmh1Y8CQQDj0v5Rq8yq2+MxjQmwcCc3sT8LlcJgvFuOJdNl94Qi0g10GIQNxRE1s5Ee6XwCoREpwIcwIc5q7ab4I3OF+SWjAkBwOiSs/Am5+8N6nFkbhUqMFvjkJB8+TzOB6Od5spAxFXnos6cgdgPdzsrku0uU2ri+EX3c5j3bk+tws2Y6asOVAkBsQSTxX+YXxfZV5EOXYCNydjmT4qyDVN1YVSb3S76w4Qjdgoy1ElAUKWgqvR1dDnXeVgqm11mDO7vcKtRI89NrAkB/RnQR+P4PhD/tpe/NUoFxsaNM71J/0V1QFMEFGrmGFlzi2SCHNPE6h+AU/joEQxhCxC3nbHppWCbD6vPcQfjE, 83888829939849, to_blob({"dataContent":"VT7kkpfh61C9tQUD8t-0r7rc35GoOnfwwCsUQ5i-MCO23lsvBFxjaafIrhzhirNnGDaqORNBcSCu9rvjQtU71Yw9g_Nsx74uPaLzqvRnTVqtEKKhM5jakSElcFwyGRTwbrWbQUhmVYWCmlyjSBfRIujm6A1WMQqa_JygAHt1jdO0Sc7LFH4QsIcu1rN5Ftrx_0FS3ojgh_wnmOXJnNaUduXRWsUgXXnDy57HWR_WRgBeXujYHIieJAX8eliRCzfviQC8e6s9bOwT67v9YiMopubd1yLPaWuIjqNZITA07hYdNOe3ZxPSzN4FcxB2bUANjjeBT6JTizN4VCMHAxfklaM8eJ7xAIEbPY-X9p9TBrdGrH3roDvtN0LurZ90FQEZ42N2kTL3CE2WvSjUBH6FAgwuPUs9syYX8Rb_EDTDZY3WkWrvy0xRlXImbGaOFE5yblMYunjPn78S-tcVvGzne6rKouLY4jGAyRKJD34gNP-3leTpjZUKVr-oFY4-DHIpK54rMo_pZB1eAI6fXVk-7ma5BcThp9gDtonyynUzwEndd1ATRKRpzLP0SC_9rLkC5Q2WzqTWPpAIewwvyBBUl5oirs1_0VsxQbj3llukGA_KlBbEZHQLh1Q2nHq_Yal_8GljngC_O5QW8jOrQAJIaQ","dataType":"3"}) Cause: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1 ; uncategorized SQLException; SQL state [99999]; error code [17041]; 索引中丢失 IN 或 OUT 参数:: 1; nested exception is java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
[org.apache.ibatis.ognl.ParseException: Encountered "" at line 1, column 11.Was expecting one of:
Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@76e54184] was not registered for synchronization because synchronization is not active Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@76e54184] 22-04-07.18:20:40.690 [http-nio-9801-exec-2] ERROR ExceptionController - Exception:{} org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'privateKey,'. Cause: org.apache.ibatis.ognl.ExpressionSyntaxException: Malformed OGNL expression: privateKey, [org.apache.ibatis.ognl.ParseException: Encountered "" at line 1, column 11. Was expecting one of: ":" ... "not" ... "+" ... "-" ...