如何卸载手动openerp模块

 真理往往是废话 发布于 2023-01-30 09:54

我在openerp v7上安装了一个我想要卸载的模块.

使用接口失败,我在卸载过程中收到错误.

是否有"手动"方式卸载模块?是否足以删除模块文件夹addons/或是否有任何其他事情要做,以最干净的方式进行?

这是我尝试通过界面卸载模块时遇到的错误:

Client Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/http.py", line 204, in dispatch
    response["result"] = method(self, **self.params)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/controllers/main.py", line 1132, in call_button
    action = self._call_kw(req, model, method, args, {})
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/controllers/main.py", line 1120, in _call_kw
    return getattr(req.session.model(model), method)(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/session.py", line 42, in proxy
    result = self.proxy.execute_kw(self.session._db, self.session._uid,     self.session._password, self.model, method, args, kw)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/session.py", line 30, in proxy_method
    result = self.session.send(self.service_name, method, *args)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/session.py", line 103, in send
    raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)


Server Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/web/session.py", line 89, in send
    return openerp.netsvc.dispatch_rpc(service_name, method, args)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/netsvc.py", line 292, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/service/web_services.py", line 626, in dispatch
    res = fn(db, uid, *params)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/osv/osv.py", line 188, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/osv/osv.py", line 131, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/osv/osv.py", line 197, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/osv/osv.py", line 185, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/base/module/module.py", line 495, in button_immediate_uninstall
    return self._button_immediate_function(cr, uid, ids, self.button_uninstall,     context=context)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/addons/base/module/module.py", line 475, in _button_immediate_function
    _, pool = pooler.restart_pool(cr.dbname, update_module=True)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/pooler.py", line 39, in restart_pool
    registry = RegistryManager.new(db_name, force_demo, status, update_module)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/registry.py", line 218, in new
    openerp.modules.load_modules(registry.db, force_demo, status, update_module)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 354, in load_modules
    loaded_modules, update_module)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 256, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report,     skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 188, in load_module_graph
    load_data(module_name, idref, mode)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 76, in 
    load_data = lambda *args: _load_data(cr, *args, kind='data')
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-    py2.7.egg/openerp/modules/loading.py", line 124, in _load_data
    tools.convert_xml_import(cr, module_name, fp, idref, mode, noupdate, report)
  File "/usr/local/lib/python2.7/dist-packages/openerp-7.0_20131016_232725-py2.7.egg/openerp/tools/convert.py", line 945, in convert_xml_import
    relaxng.assert_(doc)
  File "lxml.etree.pyx", line 3027, in lxml.etree._Validator.assert_     (src/lxml/lxml.etree.c:129517)
AssertionError: Did not expect text in element record content, line 33

对不起这条长长的痕迹..

起初我怀疑其中一个xml文件出错了,但是当我尝试手动安装模块时遇到同样的错误,我认为其他问题出了问题,但我看不清楚是什么.

干杯

1 个回答
  • 删除模块的代码addons/是不够的 - 这将破坏OpenERP.

    解决方案1 ​​ - 尝试解决正常卸载期间出现的错误

    建议使用此方法,因为OpenERP可以干净地完成工作.查看卸载过程中出现的错误,并尝试设想可能出现的问题.在此处发布错误跟踪以获取进一步的帮助

    解决方案2 - 手动卸载

    我的程序基于OpenERP v6.0,但它在OpenERP v7中应该非常相似.

      备份你的数据库:).做吧.在此过程中你很可能会破坏某些东西.

      查找在安装或更新模块期间创建的记录.

      查看__openerp__.py安装和更新模块时要考虑的XML文件.或者,考虑模块目录中的所有XML文件.

      在安装或更新期间搜索此模块创建的记录.<record ...model='...'>这些文件中应该有XML元素.该model属性告诉您记录所在的数据表.如果您使用的是类Unix系统,则可以在模块的根目录中尝试以下命令:

      grep -r -n -A 5 --include="*.xml" \<record *

      删除这些记录.您将使用某些数据库接口工具(如PgAdmin或)pqsl并查找上一步中发现的记录.

      例如,以下XML行定义了数据表中的记录ir_cron:

      <record model="ir.cron" id="ir_cron_account_fiscalyear_close">

      知道了,您可以根据XML文件中为此记录定义的数据找到记录.

      查找并删除模块定义的所有菜单项.如上所述,在XML文件中搜索<menuitem ...>元素.在数据表中查找相关记录ir_ui_menu.

      发现models模块定义的内容.请尝试以下命令:

      grep -r -n -C 5 --include="*.py" "_name = " *

      只关注从osv.osv(osv.Model在OpenERP v7中)派生的对象中定义的模型.它们定义存储在数据库中的持久模型.来自osv.osv_memory(osv.TransientModel在v7中)的对象后代不存储在数据库中.

      小心并避免删除父对象中定义的模型.查看_inherit对象的属性以了解相关信息.在这种情况下,您只想删除模块添加的列.

      一旦发现模块定义的模型,请尝试删除相应的数据表.例如,模型用

      _name = "bg_vat.bg_vat"

      将在数据库中有一个名为'bg_vat_bg_vat'的相应表.

      最后,删除或仅停用模块.在ir_module_moduledatatable中查找与您的模块对应的记录.您可以删除记录或只将state字段设置为uninstalled.

      如果您愿意,您现在可以删除模块的目录,addons但我没有理由这样做.

    我确定我错过了一些清理操作(比如数据表ir_model*系列中的记录).我也很确定这个程序很容易破坏你的OpenERP安装.先做备份.:)

    2023-01-30 09:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有