Skip to content
  • Categories
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse

Odoo 中文社区

  1. Home
  2. Categories
  3. Odoo 安装指南
  4. 无法备份帐套

无法备份帐套

Scheduled Pinned Locked Moved Odoo 安装指南
24 Posts 9 Posters 42.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    digitalsatori
    管理员
    wrote on last edited by
    #4

    你可以在“开始”->“运行“中输入[quote]cmd[/quote],然后在终端窗口中输入

    pg_dump
    

    ,如果显示无法识别的命令,那你就要在windows环境变量path中设置到PostgreSQL下的bin目录的路径。

    如何设置windows环境变量,问google吧

    【上海先安科技】(tony AT openerp.cn)

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mrshelly
      wrote on last edited by
      #5

      下午同 L21 两人一起就 OpenERP 5.0.15 帐套无法实现备份  做了些代码跟踪.

      最后发现 5.0.15 对于 备份的 pg_dump 的调用方式同 5.0.9 发生了很大的改变.

      5.0.15 使用了 subprocess.Popen 来进行命令调用操作. 这个在 windows 下面似乎有些问题. 最后换回 5.0.9 的 os.popen2 完成 备份问题的修正..

      1 Reply Last reply
      0
      • L Offline
        L Offline
        linyaohui
        wrote on last edited by
        #6

        感谢shelly指导,解决过程是用
        def exec_pg_command_pipe(name, *args):
            prog = find_pg_tool(name)
            if not prog:
                raise Exception('Couldn't find %s' % name)
            if os.name == "nt":
                cmd = '"' + prog + '" ' + ' '.join(args)
            else:
                cmd = prog + ' ' + ' '.join(args)
            return os.popen2(cmd, 'b')

        代替了tools下面misc文件的
        中的
        def exec_pg_command_pipe(name, *args):
            prog = find_pg_tool(name)
            if not prog:
                raise Exception('Couldn't find %s' % name)

            pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1,
                                  stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)
            return (pop.stdin, pop.stdout)

        shelly完美解决了问题,请shelly兄能分享下解决思路!俺还是一知半解,例如怎样知道问题是在tools下的misc。py呢?

        1 Reply Last reply
        0
        • W Offline
          W Offline
          wjfonhand
          wrote on last edited by
          #7

          毫不留情地呼吁全体社区成员赠香吻给shelly姐姐

          GoodERP -- Odoo China fork

          1 Reply Last reply
          0
          • S Offline
            S Offline
            stbrine
            wrote on last edited by
            #8

            飞吻一个给mrshelly

            1 Reply Last reply
            0
            • H Offline
              H Offline
              hifly
              wrote on last edited by
              #9

              赞 shelly 太厉害了

              1 Reply Last reply
              0
              • D Offline
                D Offline
                digitalsatori
                管理员
                wrote on last edited by
                #10

                且慢, 这不只是windows下的问题,Linux下也存在问题,查了一下subprocess的文档,发现Open ERP5.0.15在使用subprocess.Popen时参数设定是错误的。正待向Lauchpad上提交Bug Report, 发现该bug在月初时就有人发现并且在版本库中已解决(https://bugs.launchpad.net/openobject-server/+bug/685115),这就是开源的优势之一,修改的方法很简单:

                --- /home/mtm/openerp-server-5.0.15/bin/tools/misc.py&nbsp;  2010-11-04 15:12:38.000000000 +0300<br />+++ misc.py&nbsp;  2010-12-04 11:30:04.000000000 +0300<br />@@ -140,7 +140,7 @@<br />&nbsp; &nbsp;  if not prog:<br />&nbsp; &nbsp; &nbsp; &nbsp;  raise Exception(&#039;Couldn\&#039;t find %s&#039; % name)<br /> <br />-&nbsp; &nbsp; pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1,<br />+&nbsp; &nbsp; pop = subprocess.Popen((prog,) + args, bufsize= -1,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)<br />&nbsp; &nbsp;  return (pop.stdin, pop.stdout)<br /> <br />@@ -149,7 +149,7 @@<br />&nbsp; &nbsp;  if not prog:<br />&nbsp; &nbsp; &nbsp; &nbsp;  raise Exception(&#039;Couldn\&#039;t find %s&#039; % name)<br /> <br />-&nbsp; &nbsp; pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1,<br />+&nbsp; &nbsp; pop = subprocess.Popen((prog,) + args, bufsize= -1,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)<br />&nbsp; &nbsp;  return (pop.stdin, pop.stdout)<br /> #----------------------------------------------------------
                



                很不好意思的要给Shelly姐满是唇印的脸颊留个巴掌印了:

                Shelly的解法:1.没有找到错误的实质 2. os.popen2是一个Python2.6开始就淘汰(deprecated)的函数,这也是为什么OE会从os.popen2转到subprocess的原因

                不过还是要感谢Shelly姐一贯的热心助人,无私奉献的精神,鼓掌!

                【EDIT:】刚才在上面直接拷贝了bug report中的patch文件,回过头一看也是错误的,上面贴出的是修改好的。

                【上海先安科技】(tony AT openerp.cn)

                1 Reply Last reply
                0
                • JoshuaJ Offline
                  JoshuaJ Offline
                  Joshua
                  管理员
                  wrote on last edited by
                  #11

                  谢谢LS几位精彩的解答啊。
                  但是我有个疑问,好像这个错误在log里面没有显示出来,要跟踪这个错误就只能直接看代码啦?

                  【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                  1 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    digitalsatori
                    管理员
                    wrote on last edited by
                    #12

                    [quote author=Joshua link=topic=2244.msg7246#msg7246 date=1292549568]
                    但是我有个疑问,好像这个错误在log里面没有显示出来,要跟踪这个错误就只能直接看代码啦?
                    [/quote]
                    好象只在trunk里做了修改: [检测到链接无效,已移除]

                    【上海先安科技】(tony AT openerp.cn)

                    1 Reply Last reply
                    0
                    • L Offline
                      L Offline
                      linyaohui
                      wrote on last edited by
                      #13

                      精彩

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        mrshelly
                        wrote on last edited by
                        #14

                        顶起来.
                        今天用 5.0.15 . 按 digitalsatori 的解决方案, 把 misc.py 文件中 的代码 更改为

                        <br />...<br /><br />def exec_pg_command_pipe(name, *args):<br />&nbsp; &nbsp; prog = find_pg_tool(name)<br />&nbsp; &nbsp; if not prog:<br />&nbsp; &nbsp; &nbsp; &nbsp; raise Exception(&#039;Couldn\&#039;t find %s&#039; % name)<br /><br />&nbsp; &nbsp; #pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1,<br />&nbsp; &nbsp; #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)<br />&nbsp; &nbsp; pop = subprocess.Popen((prog,) + args, bufsize= -1,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)<br />&nbsp; &nbsp; return (pop.stdin, pop.stdout)<br /><br />def exec_command_pipe(name, *args):<br />&nbsp; &nbsp; prog = find_in_path(name)<br />&nbsp; &nbsp; if not prog:<br />&nbsp; &nbsp; &nbsp; &nbsp; raise Exception(&#039;Couldn\&#039;t find %s&#039; % name)<br /><br />&nbsp; &nbsp; #pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1,<br />&nbsp; &nbsp; #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)<br />&nbsp; &nbsp; pop = subprocess.Popen((prog,) + args, bufsize= -1,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)<br /><br />&nbsp; &nbsp; return (pop.stdin, pop.stdout)<br />...<br />
                        



                        替换后, 还是备份出错.  digitalsatori 测试过了吗? 或者再深入看一下? 谢谢.

                        目前暂时还是使用 os.popen2 解决...

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          mrshelly
                          wrote on last edited by
                          #15

                          好吧. 自己解决了.

                          是因为 windows 不支持 close_fds 参数. 所以, 只需要按校长的 改. 并把 close_fds 参数去掉即可.

                          既然 校长 B4我了一下... 我也B4校长一下... 哪能不测试就发出来哩... 最起码 os.popen2 的还能用嘛.. 嘿嘿嘿

                          <br />...<br /><br />def exec_pg_command_pipe(name, *args):<br />&nbsp; &nbsp; prog = find_pg_tool(name)<br />&nbsp; &nbsp; if not prog:<br />&nbsp; &nbsp; &nbsp; &nbsp; raise Exception(&#039;Couldn\&#039;t find %s&#039; % name)<br /><br />&nbsp; &nbsp; #pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1,<br />&nbsp; &nbsp; #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)<br />&nbsp; &nbsp; pop = subprocess.Popen((prog,) + args, bufsize= -1, stdin=subprocess.PIPE, stdout=subprocess.PIPE)<br />&nbsp; &nbsp; return (pop.stdin, pop.stdout)<br /><br />def exec_command_pipe(name, *args):<br />&nbsp; &nbsp; prog = find_in_path(name)<br />&nbsp; &nbsp; if not prog:<br />&nbsp; &nbsp; &nbsp; &nbsp; raise Exception(&#039;Couldn\&#039;t find %s&#039; % name)<br /><br />&nbsp; &nbsp; #pop = subprocess.Popen(args, executable=prog, shell=True, bufsize= -1,<br />&nbsp; &nbsp; #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  stdin=subprocess.PIPE, stdout=subprocess.PIPE, close_fds=True)<br />&nbsp; &nbsp; pop = subprocess.Popen((prog,) + args, bufsize= -1, stdin=subprocess.PIPE, stdout=subprocess.PIPE)<br /><br />&nbsp; &nbsp; return (pop.stdin, pop.stdout)<br />...<br />
                          



                          5.0.15 server 测试通过...

                          1 Reply Last reply
                          0
                          • D Offline
                            D Offline
                            digitalsatori
                            管理员
                            wrote on last edited by
                            #16

                            B4的有理,偶也B4一下校长。 😃 多谢Shelly同学

                            【上海先安科技】(tony AT openerp.cn)

                            1 Reply Last reply
                            0
                            • X Offline
                              X Offline
                              xtjie
                              wrote on last edited by
                              #17

                              请问在windows下可以修改吗?如果能修改,改哪儿.

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                mrshelly
                                wrote on last edited by
                                #18

                                [quote author=xtjie link=topic=2244.msg7385#msg7385 date=1295247745]
                                请问在windows下可以修改吗?如果能修改,改哪儿.
                                [/quote]


                                我说的就是 windows 下的.

                                只需要修改 windows openerp server 文件夹下的  library.zip 文件里对应的文件 就行了...

                                1 Reply Last reply
                                0
                                • X Offline
                                  X Offline
                                  xtjie
                                  wrote on last edited by
                                  #19

                                  library.zip 里的文件都是 .pyo编译过的文件,我在源文件里修改完,用python -O 编译出现缺少模块的编译错误,总不能再生成一个windows的 server 安装包. 或者把misc.py 修改完直接放在library.zip里,是否可行.

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    mrshelly
                                    wrote on last edited by
                                    #20

                                    [quote author=xtjie link=topic=2244.msg7387#msg7387 date=1295311398]
                                    library.zip 里的文件都是 .pyo编译过的文件,我在源文件里修改完,用python -O 编译出现缺少模块的编译错误,总不能再生成一个windows的 server 安装包. 或者把misc.py 修改完直接放在library.zip里,是否可行.
                                    [/quote]

                                    try it .


                                    注意 优先级.

                                    当 .pyc .pyo 文件存在时. python 是不会去理会  .py 文件的.

                                    1 Reply Last reply
                                    0
                                    • X Offline
                                      X Offline
                                      xtjie
                                      wrote on last edited by
                                      #21

                                      windows只能是把整个生成包的环境安装后,修改完misc.py后,编译misc.py,否则不能用.这就是在linux下和windows下玩的区别.linux下修改完,一存新可以了.windows下不行.

                                      1 Reply Last reply
                                      0
                                      • M Offline
                                        M Offline
                                        mrshelly
                                        wrote on last edited by
                                        #22

                                        我就瞧这个贴子, 啥话都不说.


                                        或者把misc.py 修改完直接放在library.zip里,是否可行.

                                        try it .


                                        注意 优先级.

                                        当 .pyc .pyo 文件存在时. python 是不会去理会  .py 文件的.

                                        如果你有仔细看回贴.. 应该不难找出解决办法.

                                        1 Reply Last reply
                                        0
                                        • X Offline
                                          X Offline
                                          xtjie
                                          wrote on last edited by
                                          #23

                                          我试过了,删除misc.pyo,把misc.py放在library.zip 中,不行.

                                          1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups