Odoo数据库备份错误

时间:2016-03-19 06:59:59

标签: openerp database-backups

我想将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 -

2 个答案:

答案 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