仔細(xì)分析,無非幾個(gè)原因:
創(chuàng)新互聯(lián)主要從事做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)尋甸,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
1、log目錄的權(quán)限問題,比如log文件指定的目錄postgres用戶無權(quán)寫入,因此沒有產(chǎn)生任何log文件。檢查了/var/lib/postgresql/11/main的目錄,沒有發(fā)現(xiàn)問題。
2、配置文件的權(quán)限問題,檢查了/etc/postgresql/11/main目錄,也沒有發(fā)現(xiàn)任何問題,postgres用戶是有權(quán)限讀取配置文件的。
3、配置文件有錯(cuò)誤導(dǎo)致無法正常啟動(dòng)postgresql。排除了上面的兩個(gè)原因,這個(gè)應(yīng)該是最大的原因了。但是,錯(cuò)誤在哪里呢?沒有給出提示??!
?嘗試了service postgresql start, pg_ctrcluster, pg_ctl均無法給出任何提示,后來才想明白,這幾個(gè)都是對postmaster的腳本封裝啊,也許這些封裝忽略了什么重要的信息!應(yīng)該直接運(yùn)行postmaster才能得到直接的出錯(cuò)提示的!果然,執(zhí)行/usr/lib/postgresql/11/bin/下的postmaster給出了提示,執(zhí)行語句:
?看到這里立刻明白了:我將postgresql.conf中的lc_messages改為了 en_US.UTF-8,可是沒有產(chǎn)生en_US.UTF-8的locale文件啊!于是修改/etc/locales.gen文件添加en_US.UTF-8,執(zhí)行l(wèi)ocales.gen,再次啟動(dòng)postgresql,成功!
postgreSQL命令的詞法分析和語法分析是由Unix工具Yacc和Lex制作的。使用的是 Bison 和
Flex。
詞法分析和語法分析依賴的文件定義在src\backend\parser下的scan.l和gram.y。其中:
在raw_parser函數(shù)(在src/backend/parser/parser.c下)中,主要通過調(diào)用Lex和Yacc配合生成的base_yyparse函數(shù)來實(shí)現(xiàn)詞法分析和語法分析的工作。
其他的重要源碼文件:
輔助腳本:
SQL關(guān)鍵字定義及查找函數(shù)
SQL關(guān)鍵字列表
因?yàn)椴檎沂遣捎枚植檎曳āH绻砑雨P(guān)鍵字,需要保持name的順序。
有的。PostgreSQL內(nèi)建有分析函數(shù),PostgreSQL稱之為Window Function,有如下這些:
row_number()
rank()
dense_rank()
percent_rank()
cume_dist()
ntile(num_buckets integer)
lag(value any [, offset integer [, default any ]])
lead(value any [, offset integer [, default any ]])
first_value(value any)
last_value(value any)
nth_value(value any, nth integer)
具體說明參看PostgreSQL說明文件中Funcstions Operates下的Winow Functions。