MAC的PostgreSQL数据库的基本操作

安装

安装

brew install postgresql -v

初始配置PostgreSQL,
指定 “/usr/local/var/postgres” 为 PostgreSQL 的配置数据存放目录,并且设置数据库数据编码是 utf8,更多配置信息可以 “initdb --help” 查看

initdb /usr/local/var/postgres -E utf8

设成开机启动PostgreSQL

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

启动

pg_ctl -D ``/usr/local/var/postgres` `-l ``/usr/local/var/postgres/server``.log start

关闭

pg_ctl -D /usr/local/var/postgres stop -s -m fast

操作

创建一个PostgreSQL用户

createuser username -P

上面的username是用户名。
创建数据库

createdb dbname -O username -E UTF8 -e

上面创建了一个名为 dbname 的数据库,并指定 username 为改数据库的拥有者(owner),数据库的编码(encoding)是 UTF8,参数 “-e” 是指把数据库执行操作的命令显示出来。
连接数据库

psql -U username -d dbname -h 127.0.0.1

PostgreSQL数据库操作

  • 显示已创建的数据库 \l

  • 在不连接进PostgreSQL数据库的情况下,也可以在终端上查看已创建的列表 psql -l

  • 连接数据库 \c dbname

  • 显示数据库。 \d

  • 创建一个名为test的表。 CREATE TABLE test(id int ,text VARCHAR(50));

  • 插入一条记录。 INSERT INTO test(id,text) VALUES(1,‘ASDASDSDA’);

  • 查询记录。 SELECT * FROM test WHERE id = 1;

  • 更新记录. UPDATE test SET text = ‘sadasdas’ where id = 1;

  • 删除指定记录DELETE FROM test WHERE id = 1;

  • 删除表DROP TABLE test

  • 删除数据库DROP DATABASE dynamo

PostgreSQL 9.2 版本升级到 9.3.1 版本后的数据兼容问题

连接 PostgreSQL 时报以下错误:

`psql: could not connect to server: Connection refused``Is the server running on host "127.0.0.1" and accepting``TCP/IP connections on port 5432?`

打开 PostgreSQL 的服务日志发现是 PostgreSQL 9.2 版本升级到 9.3.1 版本后的数据兼容问题:

tail -f /usr/local/var/postgres/server.log``FATAL:  database files are incompatible with server``DETAIL:  The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.1.

对于版本的数据升级问题,PostgreSQL 提供了 pg_upgrade 来做版本后的数据迁移,用法如下:

`pg_upgrade -b 旧版本的bin目录 -B 新版本的bin目录 -d 旧版本的数据目录 -D 新版本的数据目录 [其他选项...]`

数据迁移前,记得先关闭 PostgreSQL 的 postmaster 服务,不然会报以下错误:

`There seems to be a postmaster servicing the new cluster.``Please shutdown that postmaster and try again.``Failure, exiting`

利用 pg_ctl 关闭 postmaster:

`pg_ctl -D /usr/local/var/postgres stop`

Mac 下也可以这样关闭:

`launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist`

首先备份旧版本的数据(默认是在 /usr/local/var/postgres 目录):

`mv /usr/local/var/postgres /usr/local/var/postgres.old`

利用 initdb 命令再初始一个数据库文件:

`initdb /usr/local/var/postgres -E utf8 --locale=zh_CN.UTF-8`

NOTE:记得加 “–locale=zh_CN.UTF-8” 选项,不然会报以下错误:

`lc_collate cluster values do not match:  old "zh_CN.UTF-8", new "en_US.UTF-8"`

最后运行 pg_upgrade 进行数据迁移:

`pg_upgrade -b /usr/local/Cellar/postgresql/9.2.4/bin/ -B /usr/local`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值