如何使用sql或phpPgAdmin更改PostgreSQL数据库的数据库编码?

如何使用sql或phpPgAdmin更改PostgreSQL数据库的数据库编码

简言之,仅使用phpPgAdmin或SQL无法做到这一点,而不存在现有数据损坏的风险。
您必须导出所有数据,使用正确的编码创建数据库,并恢复导出的数据

这是您应该如何进行的:

  1. 创建数据库转储

    pg_转储您的_数据库>您的_database.sql

    这将以sql格式保存数据库,并使用当前的编码方式

  2. 删除数据库(或重命名):

    DROP DATABASE您的_数据库

    如果您有足够的存储空间,我建议保留旧数据库,直到您确定新数据库一切正常,重命名它:

    alterdatabase将您的\u数据库重命名为您的\u数据库\u备份

  3. 使用新编码创建数据库

    使用编码为“UNICODE”的模板=template0创建数据库\u数据库

  4. 从以前创建的转储导入数据:

    PGCLIENTENCODING=YOUR_OLD_ENCODING psql-f YOUR_database.sql YOUR_database

    您需要将psql客户机编码设置为旧数据库中的编码

动态更改编码是不可能的,因为它需要重写大多数内部数据库数据,这几乎等同于按照我描述的方式重新创建数据库

可以只更改有关数据库的内部postgres信息,更改后的任何新数据都将正确保存,但是现有数据可能会损坏

发表评论