异常解析————Parameter metadata not available for the given statement
生活随笔
收集整理的這篇文章主要介紹了
异常解析————Parameter metadata not available for the given statement
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
引言
在將數據存入mysql數據庫時拋出異常:Parameter metadata not available for the given statement。參數元數據對于給定的聲明不可用。
SQL本身并沒有錯誤:
@Autowiredprivate JdbcTemplate jdbc;public Integer saveScenicSequence(ScenicSequence scenic) {String sql = "INSERT IGNORE INTO scenic_sequence(seco_scenic_id, scenic_name, scenic_num, scenic_location, createtime) VALUES(?,?,?,?,?)";Object[] args = { scenic.getSecoScenicId(), scenic.getScenicName(), scenic.getScenicNum(),scenic.getScenicLocation(), System.currentTimeMillis() };return jdbc.update(sql, args);}調查發現,是因為傳入的對象中個別字段由于不能確定其值因此賦了null,這才會導致存庫錯誤。定位代碼:
解決方法
一招制敵:
#generateSimpleParameterMetadata=true生成簡單的參數元數據 spring.datasource.url=jdbc:mysql://123.57.226.216/secoid?generateSimpleParameterMetadata=true錯誤原因
MetaData,中文譯名“元數據”,定義數據的數據,指的是數據庫中 庫、 表、 列 的定義信息。
拋出的異常針對的是ParameterMetaData(參數元數據)。參數元數據主要用于獲取sql語句中占位符的相關信息。
參數元數據是通過PreparedStatement.getParameterMetaData()方法獲取。
ParameterMetaData paramMetaData = st.getParameterMetaData();而mysql驅動默認generateSimpleParameterMetadata=false,在傳入null參數的時候,生成不了有效的元數據,因此才會報錯。
綜上,是關于此異常的簡單解釋。如有疑問請文末留言。
總結
以上是生活随笔為你收集整理的异常解析————Parameter metadata not available for the given statement的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下查看版本及系统信息
- 下一篇: Git初学札记(九)————EGit检出