欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Postgresql

程序员文章站 2022-07-15 11:58:00
...
据说Postgresql是很棒的sql,比Mysql还要出色,是Heroku的首选(默认配置),所以我选择它作为数据库。
安装Postgresql
$ sudo apt-get install postgresql postgresql-client postgresql-contrib
aptitude install libpq-dev(这个东西不装的话bundle install会报错缺少native extensions)
配置Postgresql
按照:https://help.ubuntu.com/10.04/serverguide/C/postgresql.html配置一下。需要修改 /etc/postgresql/8.4/main/postgresql.conf
去掉listen_addresses = 'localhost'前面的#,按照注释说明修改,需要重启系统。
修改/etc/postgresql/8.4/main/pg_hba.conf,改为password(明文密码)
local   all         postgres                          password
see http://www.cnblogs.com/bluesfeng/archive/2010/09/01/1815417.html
ident是明文验证密码,如果设置为trust,pgadmin3无法正常链接。
这时要: ALTER USER postgres with PASSWORD 'yourpassword'
sudo /etc/init.d/postgresql restart(服务器上可能是/etc/init.d/postgresql-8.4 restart)
下载开发工具
$ sudo apt-get install pgadmin3
$ pgadmin3启动

Rails配置
安装Native:sudo apt-get install libpq-dev
Gemfile中:gem "pg"
然后bundle install
database.yml
development:
  adapter: postgresql
  encoding: unicode
  database: atech_development
  host: localhost
  pool: 5
  username: yyyyfdssfd
  password: sssfdsf
注意那个host: localhost对于多用户的情况,是不能少的。

posgres命令行
sudo -u postgres psql 进入posgres命令行,\q退出命令行
ALTER ROLE postgres WITH ENCRYPTED PASSWORD 'mypassword';修改数据库链接密码
创建数据库:create database xxx_production;

报错整理
如果报错development database is not configured
/home/zj/.rvm/gems/ruby-1.9.2-p290@rails3.1.0/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:62:in `establish_connection'
则请仔细检查database.yml,看里面有没有乱码,特别是空格乱码你是看不到的,但通过IDE比如Netbeans就能发现自己看不到属性。
如果报错:
rake aborted!
FATAL:  Ident authentication failed for user "postgres"
/home/zj/.rvm/gems/ruby-1.9.2-p290@rails3.1.0/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:991:in `initialize'
是因为没有配置Postgresql,看前面配置。


zj@loveztt:~/cms$ psql -h 127.0.0.1 -U postgres -d atech_development

在服务器端我bundle install报错:
Installing pg (0.11.0) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/local/rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
解决:dpkg -l|grep postg
发现是9.1版本,就sudo aptitude install postgresql-server-dev-9.1
搞定。

命令行常用操作
\c my_db 切换到数据库my_db
查询等操作:SELECT * FROM blogs where id=2;注意分号是很重要的,表示结束。如果不加分号,它认为是多行,直到出现;后,一起执行,
\dt 列出所有的表。
Mac下将Postgresql加到自动开机启动:
mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

列出所有的Database clusters:
SELECT setting FROM pg_settings WHERE name = 'data_directory';
参考文章:
http://www.stuartellis.eu/articles/postgresql-setup/
https://help.ubuntu.com/10.04/serverguide/C/postgresql.html
http://*.com/questions/2942485/psql-fatal-ident-authentication-failed-for-user-postgres
http://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP