gpt4 book ai didi

python - 服务器抛出异常而不是显示 "database does not exist"

转载 作者:行者123 更新时间:2023-11-29 13:32:59 26 4
gpt4 key购买 nike

我在 ubuntu 12.04 上使用 OpenERP 7。我用“list_db = False”启动了服务器。它工作正常:菜单列表由输入字段更改。但是当我写一个不退出的数据库名称时,服务器抛出异常而不是显示消息:例如“数据库不退出”。这是异常的文本:

Client Traceback (most recent call last):

File "/opt/openerp/web/addons/web/http.py", line 204, in dispatch
response["result"] = method(self, **self.params)

File "/opt/openerp/web/addons/web/controllers/main.py", line 867, in authenticate
req.session.authenticate(db, login, password, env)

File "/opt/openerp/web/addons/web/session.py", line 115, in authenticate
uid = self.proxy('common').authenticate(db, login, password, env)

File "/opt/openerp/web/addons/web/session.py", line 30, in proxy_method
result = self.session.send(self.service_name, method, *args)

File "/opt/openerp/web/addons/web/session.py", line 103, in send
raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)

Server Traceback (most recent call last):

File "/opt/openerp/web/addons/web/session.py", line 89, in send
return openerp.netsvc.dispatch_rpc(service_name, method, args)

File "/opt/openerp/server/openerp/netsvc.py", line 292, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)

File "/opt/openerp/server/openerp/service/web_services.py", line 433, in dispatch
return fn(*params)

File "/opt/openerp/server/openerp/service/web_services.py", line 444, in exp_authenticate
res_users = pooler.get_pool(db).get('res.users')

File "/opt/openerp/server/openerp/pooler.py", line 49, in get_pool
return get_db_and_pool(db_name, force_demo, status, update_module)[1]

File "/opt/openerp/server/openerp/pooler.py", line 33, in get_db_and_pool
registry = RegistryManager.get(db_name, force_demo, status, update_module)

File "/opt/openerp/server/openerp/modules/registry.py", line 192, in get
update_module)

File "/opt/openerp/server/openerp/modules/registry.py", line 208, in new
registry = Registry(db_name)

File "/opt/openerp/server/openerp/modules/registry.py", line 76, in __init__
cr = self.db.cursor()

File "/opt/openerp/server/openerp/sql_db.py", line 484, in cursor
return Cursor(self._pool, self.dbname, serialized=serialized)

File "/opt/openerp/server/openerp/sql_db.py", line 182, in __init__
self._cnx = pool.borrow(dsn(dbname))

File "/opt/openerp/server/openerp/sql_db.py", line 377, in _locked
return fun(self, *args, **kwargs)

File "/opt/openerp/server/openerp/sql_db.py", line 440, in borrow
result = psycopg2.connect(dsn=dsn, connection_factory=PsycoConnection)

File "/usr/lib/python2.7/dist-packages/psycopg2/__init__.py", line 179, in connect
connection_factory=connection_factory, async=async)

OperationalError: FATAL: database "db_test" does not exist

编辑:

我刚刚找到了这个错误的原因。请转到“web/addons/web/static/src/js/chrome.js: line 706 : 你会看到 on_submit 函数有一个” if " block 来验证数据库的字段是否为空。解决方案是添加第二个 "if " block 来验证输入的名称是否在之前的数据库列表中调用 do_login(db, login, password) 函数。

不幸的是,我不知道如何通过 JavaScript 编程来解决这个问题

最佳答案

为了只显示消息而不是整个异常,您可以将最外层的调用包装在 try/except block 中:

try:
<make your call>
except OperationalError, e:
<evaluate e which is your exception>

关于python - 服务器抛出异常而不是显示 "database does not exist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com