簡體   English   中英

PostgreSQL 14.5 pg_read_binary_file 無法打開文件進行讀取:參數無效

[英]PostgreSQL 14.5 pg_read_binary_file could not open file for reading: Invalid argument

昨天我在 Windows 10 筆記本電腦上安裝了 PostgreSQL 14.5。 然后我運行了一個舊腳本將圖像加載到表中。 該腳本使用pg_read_binary_file function。 有些圖像是.jpg 文件,有些是.png 文件。 在 34 個文件中,只有 5 個被成功處理(1.jpg 和 4.png)。 其他 29 個失敗並出現以下錯誤:

[異常,錯誤代碼 0,SQLState XX000] 錯誤:無法打開文件“文件絕對路徑”進行讀取:無效參數

例如,下面的語句執行沒有錯誤

select pg_read_binary_file('C:\Users\Jorge\OneDrive\Documents\000\020-logos\adalid.png') as adalid_png;

...並且以下語句失敗

select pg_read_binary_file('C:\Users\Jorge\OneDrive\Documents\000\020-logos\oper.png') as oper_png;

...帶有以下錯誤消息

[Exception, Error code 0, SQLState XX000] ERROR: could not open file "C:/Users/Jorge/OneDrive/Documents/000/020-logos/oper.png" for reading: Invalid argument

到目前為止,我無法確定可能導致錯誤的文件中的任何差異。 此外,我很確定該腳本適用於版本 14 的早期版本。不幸的是,我無法找到一個網站來下載這些早期版本中的任何一個以再次對其進行測試。

有沒有其他人發現這個問題及其解決方案?

我找到了原因; 當文件名不是小寫時,命令失敗。 所以我通過重命名所有圖像文件解決了這個問題。

例如,文件名 JRCG1.JPG 失敗,但如果文件重命名為 jrcg1.jpg,則成功。

科技不是很棒嗎?

請忽略我之前的回答 正如您在其中看到的,沒有對最后一個命令(update pais)失敗的解釋。

現在我認為這個問題是由OneDrive引起的。 這台筆記本電腦是新的。 當我使用我的 Microsoft 帳戶登錄時,會自動創建和更新 OneDrive 目錄。 顯然,此操作僅更新目錄條目,將文件的內容保留在雲中,直到它們被打開(或重命名)。 當我壓縮包含我所有圖像的目錄時,出現了來自 OneDrive 的一條消息,說它在那一刻將恢復一些文件。 之后,我的腳本中的所有命令都可以工作。 我什至將那些帶有連字符或大寫名稱的文件重命名(恢復為原來的名稱),一切正常。 我的理論是pg_read_binary_file從目錄中獲取文件條目,因此它沒有給出“沒有這樣的文件或目錄”消息,但是它讀取內容失敗; 而是給出“無效參數”消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM