最近我遇到了一个(可能是已知的问题),Postgre的版本在主要数字上不同(总是升级,没有降级),例如字段类型。
在我的案例中,几乎没有冲突的数据,所以我手动更改了它,但我想知道更多,以防我用更多的数据再次遇到这个问题。
在这个具体的例子中(但可以扩展到未来可能出现的其他问题),我只使用数据插入创建了备份,因为我已经保存了表结构。
问题出现在使用money
类型从8.x升级到9.x时,我出现了错误,因为插入的值类似
INSERT INTO foo(...) VALUES (...,'EUR300',...);
所以postgres拒绝在9.1 中插入
我的想法,以及我尝试的是将该字段转换为DECIMAL并重新进行转储,这是有效的,但在未来,是否还有其他机制,比如使用更新的pg_dump连接到旧数据库,而不是当前的机制?(未对此进行测试)
在不同版本之间切换时,应始终使用新版本的pg_dump
。这意味着当您从8.x升级到9.1时,应该使用pg_dump
9.1版本。它通常应该处理任何必要的转换。