postgresql 數據庫遇到的坑,relation “XXX_id_seq“ does not exist


relation “XXX_id_seq” does not exist
網上的解決方法
第一種解釋
用psotgresql練手的時候打算 從生產數據庫到開發數據庫 ,轉存sql腳本。
運行sql腳本的時候數據和結構都刷不過來,於是檢查sql腳本和報錯,一直報relation “performance_id_seq” does not exist ,查閱文檔得知:
在postgresql表中建立了自增字段,id定義為Serial 類型,當執行完成建表語句后,其字段便成:
“id” int4 NOT NULL DEFAULT nextval(‘performance_id_seq’::regclass)
這種形式
但是導出sql腳本時候直接定義成這種形式,postgresql不能識別,想必是postgresql的一個小bug吧,因此自增的id,在建表的時候應該定義為: “id” serial

第二種解釋

 

他們好像說的是一回事啊,怎么改 serial 呀,我是新手不知道啊

我的解決方法
新建查詢,執行 CREATE SEQUENCE IF NOT EXISTS XXXX_id_seq;
執行sql文件
完成了
相關技能
查詢所有自增序列
SELECT "c"."relname" FROM "pg_class" "c" WHERE "c"."relkind" = 'S';
pgSQL導表或者創建表的時候,檢查是否存在自增字段序列,然后創建
CREATE SEQUENCE IF NOT EXISTS tablename_id_seq;
創建自增序列
CREATE SEQUENCE tablename_id_seq
CREATE SEQUENCE tablename_id_seq START 10;
刪除某個自增序列
DROP SEQUENCE tablename_id_seq
更新某個自增序列
alter sequence tablename_id_seq restart with 100
查詢下一個序列
select nextval('tablename_id_seq ');
使用自增序列
nextval('tablename_id_seq'::regclass)
————————————————
版權聲明:本文為CSDN博主「手心守貝」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_35771567/article/details/103616842


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM