odoo卸载模块完系统错误Internal Server Error
-
是什么表没清除干净吗?每次想把模块卸载了再装一次就直接出错,系统都进不去。看log好像是什么没找到。之前都是卸了重装,但是感觉不是解决办法,日志如下
2017-03-28 17:05:23,967 6328 INFO BraidTim odoo.modules.loading: loading 1 modules...
2017-03-28 17:05:23,982 6328 INFO BraidTim odoo.modules.loading: 1 modules loaded in 0.01s, 0 queries
2017-03-28 17:05:24,012 6328 INFO BraidTim odoo.modules.loading: loading 43 modules...
2017-03-28 17:05:24,063 6328 INFO BraidTim odoo.modules.loading: 43 modules loaded in 0.05s, 0 queries
2017-03-28 17:05:24,174 6328 INFO BraidTim odoo.modules.loading: Modules loaded.
2017-03-28 17:05:24,177 6328 ERROR BraidTim odoo.modules.registry: Failed to load registry
Traceback (most recent call last):
File "C:\work\Odoo 10.0\server\odoo\modules\registry.py", line 78, in new
File "C:\work\Odoo 10.0\server\odoo\modules\loading.py", line 411, in load_modules
File "C:\work\Odoo 10.0\server\odoo\addons\base_action_rule\models\base_action_rule.py", line 315, in _register_hook
File "C:\work\Odoo 10.0\server\odoo\api.py", line 752, in getitem
File "C:\work\Odoo 10.0\server\odoo\modules\registry.py", line 170, in getitem
KeyError: u'meeuerp.category'
2017-03-28 17:05:24,187 6328 INFO BraidTim werkzeug: 127.0.0.1 - - [28/Mar/2017 17:05:24] "GET /web HTTP/1.1" 500 -
2017-03-28 17:05:24,191 6328 ERROR BraidTim werkzeug: Error on request:
Traceback (most recent call last):
File "werkzeug\serving.py", line 177, in run_wsgiFile "werkzeug\serving.py", line 165, in execute
File "C:\work\Odoo 10.0\server\odoo\service\server.py", line 246, in app
return self.app(e, s)
File "C:\work\Odoo 10.0\server\odoo\service\wsgi_server.py", line 184, in application
return application_unproxied(environ, start_response)
File "C:\work\Odoo 10.0\server\odoo\service\wsgi_server.py", line 170, in application_unproxied
result = handler(environ, start_response)
File "C:\work\Odoo 10.0\server\odoo\http.py", line 1306, in call
return self.dispatch(environ, start_response)
File "C:\work\Odoo 10.0\server\odoo\http.py", line 1280, in call
return self.app(environ, start_wrapped)
File "werkzeug\wsgi.py", line 579, in callFile "C:\work\Odoo 10.0\server\odoo\http.py", line 1454, in dispatch
odoo.registry(db).check_signaling()
File "C:\work\Odoo 10.0\server\odoo_init_.py", line 55, in registry
return modules.registry.Registry(database_name)
File "C:\work\Odoo 10.0\server\odoo\modules\registry.py", line 55, in new
return cls.new(db_name)
File "C:\work\Odoo 10.0\server\odoo\modules\registry.py", line 78, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "C:\work\Odoo 10.0\server\odoo\modules\loading.py", line 411, in load_modules
model._register_hook()
File "C:\work\Odoo 10.0\server\odoo\addons\base_action_rule\models\base_action_rule.py", line 315, in _register_hook
Model = self.env[action_rule.model]
File "C:\work\Odoo 10.0\server\odoo\api.py", line 752, in getitem
return self.registry[model_name]._browse((), self)
File "C:\work\Odoo 10.0\server\odoo\modules\registry.py", line 170, in getitem
return self.models[model_name]
KeyError: u'meeuerp.category' -
@萧云飞
是有mang2one还是什么依赖关系,但也只是数据依赖,没有模块依赖关系
我记得有一次报错,我直接去数据库删掉了他的表,然后就好了
这一次删掉也不行,现在直接换了个数据库
从安全性来说这样不太好吧,模块导致服务器直接出错什么的 -
@BraidTIm odoo的数据库表和列都是更具模块中对应的py文件自动生成的。many2one是要建立外键的,试想下,你的这个表的外键对应的另一个表被强制删除了,你觉得,那这个外键还存在不呢?所以你应该建立模块依赖关系。odoo会更具模块依赖关系删除整个依赖关系链上的模块。这个安全性,不是一个平台本身能全部解决的,而是你的程序设计。再安全的平台,你要开发有漏洞的代码,它也没有办法。我能想到的就是这些,希望对你有帮助
-
@萧云飞
首先感谢大佬们的耐心解答!
我没有设置模块之间的继承啊。。。我就是两个表数据之间有外键而已。有外键的话卸载模块的时候,odoo会自动按照顺序删除吗?
最后的错误KeyError: u'meeuerp.category'好像没有详细描述信息,是丢了个表吗? -
@BraidTIm 可能就是你卸载的模块中,有这个meeuerp.category这个表,而你的数据库中,还有对这个表的外键关联的表,odoo会认为这个数据库不能用,所以服务器就报错了。我想是这样的,你仔细排查下。你用了外键,把依赖建起,odoo会按照依赖关系删除。比如你有三个模块,A/B/C,A是基础模块,B依赖A, C依赖B,你卸载B,A不会受影响,而C它就会卸载。如果你这个C表中有B的外键,而你没有建立C依赖B的关系,你卸载了B,它是不会卸载C,而odoo在自检到C模块的代码时,就会报错。这样应该好理解点。