我想将Odoo应用程序从开发转移到生产系统。为此,我想备份我的数据库,并从UI进行备份。
在进行备份时,这是在UI上显示的错误
数据库备份错误:'NoneType'对象没有属性'__getitem __'
2016-03-19 06:00:02,351 2864 ERROR ? openerp.addons.web.controllers.main: Database.backup
Traceback (most recent call last):
File "C:\Odoo 9.0-20160127\server\openerp\addons\web\controllers\main.py", line 693, in backup
File "C:\Odoo 9.0-20160127\server\openerp\addons\web\controllers\main.py", line 422, in content_disposition
TypeError: 'NoneType' object has no attribute '__getitem__'
2016-03-19 06:00:02,413 2864 INFO ? werkzeug: 127.0.0.1 - - [19/Mar/2016 06:00:02] "POST /web/database/backup HTTP/1.1" 200 -
答案 0 :(得分:1)
访问任何数据库登录屏幕然后返回备份工作就足够了。在任何登录屏幕中设置附加cookie,备份后使用。
如果你有一些使用curl的自动化,那么你需要卷曲到/ web?db = {数据库名称}这将使你重定向到带有db set的登录页面,然后使用与保存的cookie相同的curl会话做一个curl post to /网络/数据库/备份。用php这样的东西:
$cookie_file = dirname(__FILE__) . "/" . date('Y-m-dH:i:s') . '.txt';
$ch = curl_init($odooHost . "/web?db={$databaseName}");
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
$content = curl_exec($ch);
if(curl_errno($ch)) {
echo 'error:' . curl_error($ch);
curl_close($ch);
unlink($cookie_file);
return;
} else {
curl_setopt($ch, CURLOPT_URL, $odooHost . "/web/database/backup");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"master_pwd={$password}&name={$databaseName}&backup_format=zip");
$content = curl_exec($ch);
在$ content之后,您应该拥有备份的数据库。将其保存到文件或您的任何需求。
答案 1 :(得分:0)
您应首先以管理员身份登录数据库,然后返回备份数据库。
此致 FTK