恢复帐套提示出错
-
把帐套A备份为文件A,提示成功。执行恢复操作,欲将文件A恢复为帐套"B-test",确定后很长一段时间出现“Couldn't restore database” 确定后帐套"B-test"出现也可以连进去,只是数据是否完整就不得而知。
tinyerp-server.log显示
Wed, 30 Apr 2008 08:52:53 INFO:web-services:DROP DB: B-test
Wed, 30 Apr 2008 09:00:23 ERROR:web-services:Exception in call: Traceback (most recent call last):
File "netsvc.pyo", line 330, in run
File "serviceweb_services.pyo", line 234, in restore
Exception: Couldn't restore database -
这回不改名,备份demo帐套,删除demo,恢复为"demo" 仍然“Couldn't restore database”
tinyerp-server.log:
Wed, 30 Apr 2008 11:41:45 INFO:web-services:DROP DB: demo
Wed, 30 Apr 2008 11:42:51 ERROR:web-services:Exception in call: Traceback (most recent call last):
File "netsvc.pyo", line 330, in run
File "serviceweb_services.pyo", line 234, in restore
Exception: Couldn't restore database -
感谢ajax79的认真测试。我试了一下确实有这个问题。将备份出的数据用pg_restore命令恢复时查到了真正的报错来自数据库:
could not execute query: ERROR: language "plpgsql" already exists Command was: CREATE PROCEDURAL LANGUAGE plpgsql;
这个错误本身实际上并不影响你所恢复的帐套。这个错误的产生是因为Tiny使用createdb命令创建数据库,createdb默认使用template1模板,而template1模板在我们
所使用的PGSQL中已安装了plpgsql语言。Tiny恢复帐套是先要创建一个数据库(用createdb),然后将dump出的数据导入这个数据库,创建的数据库中已经有了plpgsql了与导入的
这部分重复了,就返回了一个错误码,但是整个恢复过程还是继续的。解决的办法只要将创建数据库时使用template0模板就可以了,这就要修改代码了。[[i] 本帖最后由 digitalsatori 于 2008-5-1 03:03 编辑 [/i]]