欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于向PostgreSQL數(shù)據(jù)庫(kù)插入Date類型數(shù)據(jù)報(bào)錯(cuò)問(wèn)題解決方案

 更新時(shí)間:2024年12月05日 09:00:51   作者:errorsG  
本文給大家介紹在將數(shù)據(jù)庫(kù)從Oracle改為PostgreSQL時(shí)遇到的日期類型插入錯(cuò)誤,通過(guò)使用PostgreSQL的特定語(yǔ)法和更改動(dòng)態(tài)SQL語(yǔ)句解決了問(wèn)題,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧

1|0問(wèn)題場(chǎng)景

這個(gè)是公司項(xiàng)目進(jìn)行更改,將項(xiàng)目的數(shù)據(jù)庫(kù)從Oracle版本改為PostgreSQL版本時(shí)發(fā)生的錯(cuò)誤。

控制臺(tái)報(bào)錯(cuò)內(nèi)容。

SQL: insert into table (...,RQ,...) select ...,?,... union all select ...,?,...
//(這里的...省略了其他字段, 主要是RQ日期類型報(bào)錯(cuò)就沒(méi)列出)
Cause: org.postgresql.util.PSQLException: 錯(cuò)誤: 字段 "rq" 的類型為 timestamp without time zone, 但表達(dá)式的類型為 text
建議:你需要重寫(xiě)或轉(zhuǎn)換表達(dá)式 位置:404

mapper文件中的動(dòng)態(tài)sql為

<insert id="insert" parameterType="java.util.List">
  insert into table
  (
  -- 省略,
  RQ,
  -- 省略)
  <foreach collection="list" item="item" separator="union all">
    select
    -- 省略,
    #{item.rq,jdbcType=TIMESTAMP},
    -- 省略
    -- from dual 這里當(dāng)時(shí)是將項(xiàng)目Oracle數(shù)據(jù)庫(kù)轉(zhuǎn)為PostgreSQL數(shù)據(jù)庫(kù)
  </foreach>
</insert>

對(duì)應(yīng)的實(shí)體類為

@Data
public class Entity {
    // 省略
    private Date rq;
    // 省略
}

當(dāng)在插入數(shù)據(jù)到數(shù)據(jù)庫(kù)的時(shí)候就會(huì)報(bào)字段RQ類型錯(cuò)誤的問(wèn)題,但是通過(guò)檢查sql語(yǔ)句后并沒(méi)有發(fā)現(xiàn)明顯的錯(cuò)誤。

雖然控制臺(tái)報(bào)錯(cuò)了,但還是能插入幾條數(shù)據(jù)到數(shù)據(jù)庫(kù)中,然后就報(bào)錯(cuò)不能插入了。這個(gè)時(shí)候考慮到有可能插入數(shù)據(jù)的問(wèn)題,但是這里設(shè)置了#{item.rq,jdbcType=TIMESTAMP},數(shù)據(jù)類型也是符合PostgreSQL數(shù)據(jù)庫(kù)的日期類型timestamp的,所以也不是這個(gè)的問(wèn)題。

這個(gè)時(shí)候我將數(shù)據(jù)庫(kù)中的數(shù)據(jù)清除,重新執(zhí)行了幾遍程序后發(fā)現(xiàn)有時(shí)候能夠向數(shù)據(jù)庫(kù)中插入幾條數(shù)據(jù),然后就報(bào)錯(cuò),有時(shí)候一條數(shù)據(jù)都沒(méi)有插入就報(bào)錯(cuò)了,很是奇怪。

2|0解決方法

后面使用了PostgreSQL的特定的語(yǔ)法,在rq后面加上::timestamp就能夠正常插入了,如下

<insert id="insert" parameterType="java.util.List">
  insert into table
  (
  -- 省略,
  RQ,
  -- 省略)
  <foreach collection="list" item="item" separator="union all">
    select
    -- 省略,
    #{item.rq,jdbcType=TIMESTAMP}::timestamp,
    -- 省略
    -- from dual -- 這里是Oracle數(shù)據(jù)庫(kù)的語(yǔ)法
  </foreach>
</insert>

但這樣每個(gè)日期的字段都要加上這個(gè),更改起來(lái)很麻煩,所以我在想有沒(méi)有更好的解決方案。

后面我更改了這一條批量插入的動(dòng)態(tài)sql。由于這個(gè)sql在Oracle數(shù)據(jù)庫(kù)中是能夠正常的運(yùn)行的,有可能在PostgreSQL數(shù)據(jù)庫(kù)存在兼容的問(wèn)題,所以改成了在使用Mysql數(shù)據(jù)庫(kù)時(shí)常寫(xiě)的動(dòng)態(tài)sql,如下:

<insert id="inser" parameterType="java.util.List">
        insert into table (
        -- 省略,
        RQ,
        -- 省略)
        values
        <foreach collection="list" item="item" separator=",">
            (
            -- 省略,
            #{item.rq,jdbcType=TIMESTAMP},
            -- 省略
            )
        </foreach>
    </insert>

重新執(zhí)行程序后,沒(méi)有報(bào)錯(cuò),數(shù)據(jù)正常插入,完美解決!

到此這篇關(guān)于向PostgreSQL數(shù)據(jù)庫(kù)插入Date類型數(shù)據(jù)報(bào)錯(cuò)的文章就介紹到這了,更多相關(guān)向PostgreSQL數(shù)據(jù)庫(kù)插入Date類型數(shù)據(jù)報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Postgresql 默認(rèn)用戶名與密碼的操作

    Postgresql 默認(rèn)用戶名與密碼的操作

    這篇文章主要介紹了Postgresql 默認(rèn)用戶名與密碼的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • phpPgAdmin 常見(jiàn)錯(cuò)誤和問(wèn)題的解決辦法

    phpPgAdmin 常見(jiàn)錯(cuò)誤和問(wèn)題的解決辦法

    這篇文章主要介紹了phpPgAdmin 常見(jiàn)錯(cuò)誤和問(wèn)題的解決辦法,如安裝錯(cuò)誤、登陸錯(cuò)誤、轉(zhuǎn)儲(chǔ)功能、其它錯(cuò)誤和問(wèn)題等,需要的朋友可以參考下
    2014-03-03
  • postgresql?IvorySQL新增命令及相關(guān)配置參數(shù)詳解

    postgresql?IvorySQL新增命令及相關(guān)配置參數(shù)詳解

    這篇文章主要為大家介紹了postgresql?IvorySQL新增命令及相關(guān)配置參數(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 初識(shí)PostgreSQL存儲(chǔ)過(guò)程

    初識(shí)PostgreSQL存儲(chǔ)過(guò)程

    這篇文章主要介紹了初識(shí)PostgreSQL存儲(chǔ)過(guò)程,本文講解了PostgreSQL中存儲(chǔ)過(guò)程的語(yǔ)法,并給出了一個(gè)操作實(shí)例,需要的朋友可以參考下
    2015-01-01
  • PostgreSQL游標(biāo)與索引選擇實(shí)例詳細(xì)介紹

    PostgreSQL游標(biāo)與索引選擇實(shí)例詳細(xì)介紹

    這篇文章主要介紹了PostgreSQL游標(biāo)與索引選擇優(yōu)化案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-09-09
  • postgresql查詢鎖表以及解除鎖表操作

    postgresql查詢鎖表以及解除鎖表操作

    這篇文章主要介紹了postgresql查詢鎖表以及解除鎖表操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Postgresql 解決pg掉電后無(wú)法重啟的問(wèn)題

    Postgresql 解決pg掉電后無(wú)法重啟的問(wèn)題

    這篇文章主要介紹了Postgresql 解決pg掉電后無(wú)法重啟的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • PostgreSQL用戶登錄失敗自動(dòng)鎖定的處理方案

    PostgreSQL用戶登錄失敗自動(dòng)鎖定的處理方案

    這篇文章主要介紹了PostgreSQL用戶登錄失敗自動(dòng)鎖定的解決辦法,本文給大家分享解決方案,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • PostgreSQL行轉(zhuǎn)列的多種方法

    PostgreSQL行轉(zhuǎn)列的多種方法

    這篇文章主要介紹了PostgreSQL行轉(zhuǎn)列的多種方法,本文給大家分享三種方法,每種方法結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • PostGIS的安裝與入門使用指南

    PostGIS的安裝與入門使用指南

    在安裝PostGIS前首先必須安裝PostgreSQL,然后再安裝好的Stack?Builder中選擇安裝PostGIS組件。本文重點(diǎn)給大家介紹PostGIS的安裝與入門使用指南,感興趣的朋友一起看看吧
    2022-01-01

最新評(píng)論