Skip to content
  • Categories
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • 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 27.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • digitalsatoriD Offline
    digitalsatoriD 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
    • mrshellyM Offline
      mrshellyM 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
        • wjfonhandW Offline
          wjfonhandW 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
              • digitalsatoriD Offline
                digitalsatoriD 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
                  • digitalsatoriD Offline
                    digitalsatoriD 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
                      • mrshellyM Offline
                        mrshellyM 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
                        • mrshellyM Offline
                          mrshellyM 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
                          • digitalsatoriD Offline
                            digitalsatoriD 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
                              • mrshellyM Offline
                                mrshellyM 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
                                  • mrshellyM Offline
                                    mrshellyM 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
                                      • mrshellyM Offline
                                        mrshellyM 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

                                          • Login

                                          • Don't have an account? Register

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