修改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://pwwzsj.com/article/dsdpesd.html