您好,登錄后才能下訂單哦!
今天遇到一個(gè)奇怪的問題(其實(shí)是非?;A(chǔ)的問題),記錄一下
問題描述:
一個(gè)sequence,名字為:SV_INFO_SEQ_id 在PGAdmin中看存在,查詢information_schema.sequences視圖也存在,名字也完全一樣,但是在重置時(shí)總提示relation does not exists,重置語句是
select setval('SV_INFO_SEQ_id',1)
排錯(cuò)過程:
困惑了好久無果,執(zhí)行 select nextval('SV_INFO_SEQ_id')也是一樣的提示關(guān)系不存在。查看建立時(shí)SQL才發(fā)現(xiàn)問題,建立時(shí)使用的是CREATE SEQUENCE "SV_INFO_SEQ_id"……
突然才想到PG是大小寫敏感的,默認(rèn)情況下會(huì)把對(duì)象名全部轉(zhuǎn)成小寫形式存于數(shù)據(jù)庫(kù)中。如果要保持大寫,或大小寫混寫,則必須將對(duì)象稱用雙引號(hào)引起來,使用時(shí)也必須用雙引號(hào)。再次執(zhí)行
select setval('“SV_INFO_SEQ_id”',1) 得到正確的結(jié)果。
舉個(gè)例子:
create sequence "TEST_SEQ" INCREMENT 1 start 1 minvalue 1 maxvalue 10;
執(zhí)行后,在數(shù)據(jù)庫(kù)中存儲(chǔ)的是就是大寫的名稱,使用時(shí)也名稱也必須用雙引號(hào)引起來,比如
SELECT NEXTVAL("TEST_SEQ")
最后結(jié)論:
數(shù)據(jù)庫(kù)對(duì)象盡量全部使用小寫名稱,不要大寫也不要大小混排,開發(fā)時(shí)做好開發(fā)規(guī)范,必免出現(xiàn)問題。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。