【问题标题】:how can i change the "character type" of a database in postgresql?如何在 postgresql 中更改数据库的“字符类型”?
【发布时间】:2013-09-24 18:22:51
【问题描述】:

我正在使用 postgreSQL 9.1

我已将数据库的排序规则和字符类型设置为 Greek_Greece.1253,我想将其更改为 utf8

要更改排序规则,我应该使用this,对吗?

但是我怎样才能改变字符类型呢?

谢谢

编辑

我建议使用 wright C 而不是 utf8。我想将排序规则和字符类型更改为 C

【问题讨论】:

  • @DietrichEpp 您提出的问题是关于编码的。我问的是排序规则和字符类型
  • 那你就糊涂了。 UTF-8 不是字符类型,也不是排序规则,UTF-8 是一种编码。 windows 1253也是一种编码,不是字符类型。
  • @DietrichEpp 是的,我很抱歉。我改用 wright C 而不是 utf8。感谢您指出。我将编辑问题
  • 您能解释一下“字符类型”是什么意思吗?在PostgreSQL中,“字符类型”是指varchar(n)text等。1253不是字符类型,C也不是。

标签: postgresql character


【解决方案1】:

您不能更改现有数据库的默认排序规则。您需要使用所需的排序规则 CREATE DATABASE,然后将架构和数据转储/恢复到其中。

如果您不想重新创建数据库 - 您可以为数据库中的每个文本列指定排序规则。

这里是关于排序规则的详细 postgres 手册:Collation Support

本手册页的第一行指出:

数据库的 LC_COLLATE 和 LC_CTYPE 设置在之后无法更改 它的创造。

CREATE DATABASEpg_dumppg_restore

【讨论】:

  • 我使用 pgAdmin 将表列的排序规则设置为 pg_catalog."C";。名称可以很好地存储在数据库中。当我保存希腊字符时,我在数据库中看到了希腊字符。这整个问题是因为this 而开始的。我仍然看到文件夹中上传了错误的字符。是因为数据库吗?
  • @slevin 您指出的问题与 LC_COLLATE 和 LC_CTYPE 无关。它与字符编码有关(如utf8Windows 1253 等)。如果您想使用 unicode 字符 - 需要将数据库编码设置为 unicode (utf8) 并使您的应用程序以 unicode 发送字符串。
  • @数据库的编码是utf8。排序规则和字符集不同(希腊语...)。我会仔细检查一切...无论如何,感谢您的时间
  • @slevin 如果您的数据库已经使用utf8 作为编码 - 那么您的应用程序发送的文本可能编码错误。
  • 伊戈尔,感谢您的宝贵时间。我为数据库中的每个文本列指定了排序规则。至于其他问题,我也找到了解决办法。如果您愿意,请查看here。谢谢
猜你喜欢
  • 2011-12-02
  • 2011-11-02
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 2017-04-28
  • 2012-12-16
  • 2013-08-15
  • 1970-01-01
相关资源
最近更新 更多