修改postgresql的简单介绍

linux下修改pgsql的data路径

1. 修改配置文件/etc/postgresql/9.3/main/postgresql.conf

公司主营业务:成都网站建设、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出阿瓦提免费做网站回馈大家。

data_directory = '/home/pgdata'

2. 修改data_directory的所有者

chown -R postgres:postgres /home/pgdata

3. 这时候启动会报error

* The PostgreSQL server failed to start. Please check the log output:

2014-11-25 09:55:02 CST FATAL: data directory "/home/pgdata" has group or world access

2014-11-25 09:55:02 CST DETAIL: Permissions should be u=rwx (0700).

根据提示修改数据目录权限

chmod 700 /home/pgdata

4. 启动依然会报错

* The PostgreSQL server failed to start. Please check the log output:

2014-11-25 09:56:17 CST FATAL: "/home/pgdata" is not a valid data directory

2014-11-25 09:56:17 CST DETAIL: File "/home/pgdata/PG_VERSION" is missing.

把默认数据目录的东西拷贝过来

cp -r /var/lib/postgresql/9.3/main/* /home/pgdata

5. 启动 service postgresql start

Postgresql创建视图后修改基础表的问题

针对上面的select * 创建的视图获取到基础表的所有字段内容,我们做一个测试,不难发现在基础表上新增字段后,对已建的视图是没有影响的,新的字段内容并不会自动添加到视图上。

对于被视图引用的字段,是不允许被修改类型的,如果需要修改类型,需要先删掉视图,修改后再重建视图。

可以看到修改基础表的字段名,对应视图的的字段名称没有自动同步过来,是没有生效的。

同样,被视图引用的字段,是不允许被修改字段长度的。

除了以上所提到的问题,还有其他的内容,欢迎遇到问题的pger前来补充。

如何设置或更改PostgreSQL数据目录位置

Services Management”即“服务”中停止相应的PostgreSQL服务

方式二:通过命令行“NET STOPpostgresql-x64-9.1”停止相应的PostgreSQL服务Step

2:修改注册表对应键值位置在"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

\postgresql-x64-9.1

\ImagePath

",将“-D”后的目录名修改为新的数据目录位置即可,如果目录路径中含有空格,需要用引号引起。Step 3:数据迁移

拷贝数据至新数据目录,需要注意必须检查用户权限是否可于访问新的数据目录。Step 4:开启PostgreSQL服务

或者使用命令行命令“NETSTARTpostgresql-x64-9.1”[Linux]修改postgresql.conf文件,

data_directory = '

新数据目录名'

,然后重启postgresql服务即可。

修改完毕后,可以用psql命令“showdata_directory”查看当前数据目录

如何修改postgresql数据库字符集

要想打开自动字符集转换功能,你必须告诉 PostgreSQL 你想在客户端使用的字符集(编码)。你可以用好几种方法实现这个目的。

用 psql 里的 /encoding 命令。 /encoding 允许你动态修改客户端编码。 比如,把编码改变为 SJIS,键入:

/encoding SJIS

使用 libpq 函数。 /encoding 在做此用途的时候实际上是调用 PQsetClientEncoding()。

int PQsetClientEncoding(PGconn *conn, const char *encoding);

这里 conn 与后端的联接,而 encoding 是你想用的编码。如果编码设置成功它返回 0,否则返回 -1。本次联接的当前编码可以用下面函数显示:

int PQclientEncoding(const PGconn *conn);

请注意它只返回编码 ID,而不是象 EUC_JP 这样的编码符号字串。 要把编码 ID 转换为编码符号,你可以用:

char *pg_encoding_to_char(int encoding_id);

使用 SET client_encoding TO。 可以用 SQL 命令设置客户端编码:

SET CLIENT_ENCODING TO 'value';

你还可以把 SQL 语法里的 SET NAMES用于这个目的:

SET NAMES 'value';

查询当前客户端编码:

SHOW client_encoding;

返回缺省编码:

RESET client_encoding;

使用 PGCLIENTENCODING。 如果在客户端的环境里定义了 PGCLIENTENCODING 环境变量, 那么在与服务器进行联接时将自动选择客户端编码。 (这个编码随后可以用上面谈到的任何其它方法覆盖。)

使用client_encoding配置变量。 如果在 postgresql.conf 里设置了 client_encoding 变量, 那么在与服务器建立了联接之后,这个客户端编码将自动选定。(这个设置随后可以被上面提到 的其他方法覆盖。)

假如无法进行特定的字符转换 — 比如, 你选的服务器编码是EUC_JP, 客户端是LATIN1,那么有些日文字符不能转换成LATIN1。这时, 不能用LATIN1字符集表示的字母将被转换成圆括弧包围的十六进制,像,(826C) 这样。

如果客户端字符集定义成了 SQL_ASCII,那么编码转换会被关闭, 不管服务器的字符集是什么都一样。和服务器一样,除非你的工作环境全部是 ASCII 数据, 否则使用 SQL_ASCII 是不明智的。


文章题目:修改postgresql的简单介绍
标题来源:http://azwzsj.com/article/dsdpesd.html