Ruby on rails 将Postgres从9.3升级到9.6更改了列的类型';s的默认值
我正在将我的申请从Postgres 9.3升级到9.6。对于开发环境,我卸载了9.3并安装了9.6.2,然后导入了我的数据库。因为这是一个Rails应用程序,所以我有一个Ruby on rails 将Postgres从9.3升级到9.6更改了列的类型';s的默认值,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我正在将我的申请从Postgres 9.3升级到9.6。对于开发环境,我卸载了9.3并安装了9.6.2,然后导入了我的数据库。因为这是一个Rails应用程序,所以我有一个db/structure.sql——在运行迁移之后,我注意到这个文件中有一些不同之处。具体来说,一些列的默认值从类型字符变化变为类型文本(但是列类型本身没有变化): -奖励跟踪者\类型字符变化默认“奖励跟踪者”:字符变化, +奖励\跟踪器\类型字符变化默认“奖励\跟踪器”::文本, 我猜这是因为默认值的长度是已知的,但希望不进
db/structure.sql
——在运行迁移之后,我注意到这个文件中有一些不同之处。具体来说,一些列的默认值
从类型字符变化
变为类型文本
(但是列类型本身没有变化):
-奖励跟踪者\类型字符变化默认“奖励跟踪者”:字符变化,
+奖励\跟踪器\类型字符变化默认“奖励\跟踪器”::文本,
我猜这是因为默认值的长度是已知的,但希望不进行猜测。我只是使用
pg_dump
和psql
手动尝试了此操作,我无法观察到这种行为。你到底是如何升级数据库的?然而,这并不重要,因为在PostgreSQL中,text
和character variable
实际上是一样的。我们使用pg_dump
和pg_restore
——这个答案表明它们基本上是可以互换的:我只是用pg_dump
和psql
手动尝试了这个方法,我无法观察到这种行为。你到底是如何升级数据库的?然而,这并不重要,因为在PostgreSQL中,文本
和字符变化
实际上是一样的。我们使用的是pg_dump
和pg_restore
——这个答案表明它们基本上是可互换的: