Rails常見問題及解決辦法

No pg_config...

問題重現(xiàn): 在bundle的時候出現(xiàn)gem包pg-0.18.4安裝出錯的情況,錯誤代碼如下:

$ bundle
.
.
.
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/vagrant/.rvm/gems/ruby-2.3.0/gems/pg-0.18.4/ext
/home/vagrant/.rvm/rubies/ruby-2.3.0/bin/ruby -r ./siteconf20160415-7139-1cu08ba.rb extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
 --with-opt-dir
 --without-opt-dir
 --with-opt-include
 --without-opt-include=${opt-dir}/include
 --with-opt-lib
 --without-opt-lib=${opt-dir}/lib
 --with-make-prog
 --without-make-prog
 --srcdir=.
 --curdir
 --ruby=/home/vagrant/.rvm/rubies/ruby-2.3.0/bin/$(RUBY_BASE_NAME)
 --with-pg
 --without-pg
 --enable-windows-cross
 --disable-windows-cross
 --with-pg-config
 --without-pg-config
 --with-pg_config
 --without-pg_config
 --with-pg-dir
 --without-pg-dir
 --with-pg-include
 --without-pg-include=${pg-dir}/include
 --with-pg-lib
 --without-pg-lib=${pg-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/vagrant/.rvm/gems/ruby-2.3.0/extensions/x86_64-linux/2.3.0/pg-0.18.4/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/vagrant/.rvm/gems/ruby-2.3.0/gems/pg-0.18.4 for inspection.
Results logged to /home/vagrant/.rvm/gems/ruby-2.3.0/extensions/x86_64-linux/2.3.0/pg-0.18.4/gem_make.out
.
.
.
An error occurred while installing pg (0.18.4), and Bundler cannot continue.
Make sure that `gem install pg -v '0.18.4'` succeeds before bundling.

解決方案: 先不要急著按提示去執(zhí)行,出現(xiàn)這個問題可能是你沒有安裝PostgreSQL或是沒有指定pgsql的路徑塞帐。如果沒有安裝PostgreSQL,點擊傳送門去安裝(注意:執(zhí)行yum install postgresql-server后繼續(xù)往下看文檔安裝pgsql的擴展巍沙,建議最好安裝的PostgreSQL是9.X以上版本葵姥,否則許多新特性無法使用)。英文不太好的同學(xué)可以到這篇博客PostgreSQL新手入門看看句携。
步驟1:
安裝libpq-dev
Ubuntu執(zhí)行以下命令:

$ apt-get install libpq-dev

CentOS/RetH執(zhí)行以下命令:

$ yum install postgresql-devel

步驟2:
找到你的pgsql安裝目錄
我的是在/usr/pgsql-9.4榔幸,也有可能會在/usr/local/pgsql,因系統(tǒng)而異矮嫉。

步驟3:
with-pg-config后面接的就是pgsql目錄下的pg_config文件削咆,注意--with-pg-config前面還有兩個-

$ gem install pg -v '0.18.4' -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config

步驟4:
重新執(zhí)行bundle命令

無法連接pgsql

問題重現(xiàn): 運行rails s -b 0.0.0.0 -p 3000后,在瀏覽器打開項目首頁出現(xiàn)下面問題

PG::ConnectionBad (FATAL:  Ident authentication failed for user "postgres"
):
  activerecord (4.2.3) lib/active_record/connection_adapters/postgresql_adapter.rb:655:in `initialize'
  activerecord (4.2.3) lib/active_record/connection_adapters/postgresql_adapter.rb:655:in `new'
  activerecord (4.2.3) lib/active_record/connection_adapters/postgresql_adapter.rb:655:in `connect'
  activerecord (4.2.3) lib/active_record/connection_adapters/postgresql_adapter.rb:242:in `initialize'
  activerecord-postgis-adapter (3.1.0) lib/active_record/connection_adapters/postgis_adapter.rb:51:in `initialize'
.
.
.

解決方案:
找到 pg_hba.conf文件, 一般是在/var/lib/pgsql/data目錄下蠢笋,如果修改后不生效看看/var/lib/pgsql目錄下是否還有其他的數(shù)據(jù)目錄拨齐。因系統(tǒng)環(huán)境而異。
使用vimvi打開
步驟1:

$ vim /var/lib/pgsql/data/pg_hba.conf

步驟2:
按住shift + g 將光標(biāo)定位的文件底部昨寞,按i進入編輯模式瞻惋,修改METHOP為md5驗證厦滤。
完成后按shift + : 進入命令模式,輸入wq完成編輯歼狼。
下面給出修改后效果

.
.
.
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5
                                                            

步驟3:
重啟postgresql服務(wù)

$ service postgresql restart

type "json" does not exist

問題重現(xiàn): 執(zhí)行rake db:migrate時出現(xiàn)錯誤掏导,錯誤代碼如下:

$ rake db:migrate
.
.
.
== 20151208044806 CreateShops: migrating ======================================
-- create_table(:shops)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::UndefinedObject: ERROR:  type "json" does not exist
LINE 1: ...ying NOT NULL, "logo" character varying, "images" json, "reg...
.
.
.

解決方案:出現(xiàn)這種問題大多是因為安裝了老版的PostgreSQL,在CentOS上面執(zhí)行yum install postgresql默認是8.X版本羽峰。升級版本即可趟咆。

步驟1:刪除舊版postgresql

$ yum remove postgresql*

步驟2:更新yum

$ yum update

步驟3: 到http://yum.pgrpms.org/reporpms/選擇9.X以上版本下載相應(yīng)的rpm包

$ wget https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-2.noarch.rpm

步驟4:使用下載好的rpm包

$ rpm -ivh pgdg-centos94-9.4-2.noarch.rpm

步驟5:安裝postgresql94-server

yum -y install postgresql94-server

步驟6:重新啟動postgresql-94服務(wù)

$ service postgresql-9.4 start

type "geography" does not exist

問題重現(xiàn):執(zhí)行rake db:migrate時出現(xiàn)錯誤,錯誤代碼如下:

$ rake db:migrate
.
.
.
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::UndefinedObject: ERROR:  type "geography" does not exist
LINE 1: ... "address" character varying NOT NULL, "location" geography(...
.
.
.

解決方案: 這是由于沒有安裝支持geography類型數(shù)據(jù)的擴展限寞,筆者使用的是PostgreSQL-9.4版本忍啸,這里給出9.X版本的解決方案。為了后續(xù)用到其他擴展方便履植,這里也就一起安裝了计雌。

步驟1: list命令查看postgresql有哪些擴展,當(dāng)你看到下面效果說明你的yum庫中有這些擴展玫霎,如果沒有請到http://yum.pgrpms.org/reporpms/選擇9.X以上版本下載相應(yīng)的rpm包安裝凿滤。如果不需要請?zhí)^步驟1,步驟2

$ yum list postgresql94-*
已加載插件:fastestmirror
Repository pgdg94 is listed more than once in the configuration
Repository pgdg94-source is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: mirrors.yun-idc.com
 * extras: mirrors.yun-idc.com
 * updates: mirrors.yun-idc.com
已安裝的軟件包
postgresql94.x86_64                                                               9.4.7-1PGDG.rhel6                                                    @pgdg94
postgresql94-libs.x86_64                                                          9.4.7-1PGDG.rhel6                                                    @pgdg94
postgresql94-server.x86_64                                                        9.4.7-1PGDG.rhel6                                                    @pgdg94
可安裝的軟件包
postgresql94-contrib.x86_64                                                       9.4.7-1PGDG.rhel6                                                    pgdg94 
postgresql94-debuginfo.x86_64                                                     9.4.7-1PGDG.rhel6                                                    pgdg94 
postgresql94-devel.x86_64                                                         9.4.7-1PGDG.rhel6                                                    pgdg94 
postgresql94-docs.x86_64                                                          9.4.7-1PGDG.rhel6                                                    pgdg94 
postgresql94-jdbc.x86_64                                                          9.3.1101-1PGDG.rhel6                                                 pgdg94 
postgresql94-jdbc-debuginfo.x86_64                                                9.3.1101-1PGDG.rhel6                                                 pgdg94 
postgresql94-odbc.x86_64                                                          09.03.0400-1PGDG.rhel6                                               pgdg94 
postgresql94-odbc-debuginfo.x86_64                                                09.03.0400-1PGDG.rhel6                                               pgdg94 
postgresql94-plperl.x86_64                                                        9.4.7-1PGDG.rhel6                                                    pgdg94 
postgresql94-plpython.x86_64                                                      9.4.7-1PGDG.rhel6                                                    pgdg94 
postgresql94-pltcl.x86_64                                                         9.4.7-1PGDG.rhel6                                                    pgdg94 
postgresql94-python.x86_64                                                        4.2-1PGDG.rhel6                                                      pgdg94 
postgresql94-python-debuginfo.x86_64                                              4.2-1PGDG.rhel6                                                      pgdg94 
postgresql94-tcl.x86_64                                                           2.1.1-1.rhel6                                                        pgdg94 
postgresql94-tcl-debuginfo.x86_64                                                 2.1.1-1.rhel6                                                        pgdg94 
postgresql94-test.x86_64      

步驟2:安裝擴展

$ sudo yum install postgresql94-*

步驟3: 前往postgis安裝擴展庶近。
友情提示:自行編譯源碼的話翁脆,如果系統(tǒng)編譯環(huán)境不完全,會折騰很久鼻种,建議直接用yum安裝反番。推薦一篇文章centos安裝postgis

作者是為PostgreSQL源加上EPEL源叉钥,直接yum安裝罢缸,無痛解決依賴問題。抓狂的同學(xué)速度get投队。如果依然報錯枫疆,請執(zhí)行rake db:drop,然后再創(chuàng)建一次數(shù)據(jù)庫就行了敷鸦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末息楔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扒披,更是在濱河造成了極大的恐慌值依,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碟案,死亡現(xiàn)場離奇詭異愿险,居然都是意外死亡,警方通過查閱死者的電腦和手機蟆淀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門拯啦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澡匪,“玉大人,你說我怎么就攤上這事褒链⊙淝椋” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵甫匹,是天一觀的道長甸鸟。 經(jīng)常有香客問我,道長兵迅,這世上最難降的妖魔是什么抢韭? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮恍箭,結(jié)果婚禮上刻恭,老公的妹妹穿的比我還像新娘。我一直安慰自己扯夭,他們只是感情好鳍贾,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著交洗,像睡著了一般骑科。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上构拳,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天咆爽,我揣著相機與錄音,去河邊找鬼置森。 笑死斗埂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暇藏。 我是一名探鬼主播蜜笤,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼濒蒋,長吁一口氣:“原來是場噩夢啊……” “哼盐碱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沪伙,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤瓮顽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后围橡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暖混,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年翁授,在試婚紗的時候發(fā)現(xiàn)自己被綠了拣播。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晾咪。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贮配,靈堂內(nèi)的尸體忽然破棺而出谍倦,到底是詐尸還是另有隱情,我是刑警寧澤泪勒,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布昼蛀,位于F島的核電站,受9級特大地震影響圆存,放射性物質(zhì)發(fā)生泄漏叼旋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一沦辙、第九天 我趴在偏房一處隱蔽的房頂上張望夫植。 院中可真熱鬧,春花似錦油讯、人聲如沸偷崩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阐斜。三九已至,卻和暖如春诀紊,著一層夾襖步出監(jiān)牢的瞬間谒出,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工邻奠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笤喳,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓碌宴,卻偏偏與公主長得像杀狡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贰镣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容