Ошибка резервного копирования базы данных Odoo

Я хочу перенести приложение Odoo из системы разработки в рабочую систему. Для этого я хочу сделать резервную копию своей базы данных, и я делаю резервную копию из пользовательского интерфейса.

При резервном копировании эта ошибка отображается в пользовательском интерфейсе.

Ошибка резервного копирования базы данных: объект «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 -

person Gaurav Singhal    schedule 19.03.2016    source источник


Ответы (2)


Достаточно посетить любой экран входа в базу данных, а затем вернуться к резервной копии, которая будет работать. Дополнительный файл cookie устанавливается на любом экране входа в систему, который затем используется при резервном копировании.

Если у вас есть какая-то автоматизация с использованием curl, вам нужно свернуть на /web?db={имя базы данных}, которая перенаправит вас на страницу входа в систему с набором db, а затем, используя тот же сеанс curl с сохраненным файлом cookie, сделайте запись curl на /web/ база данных/резервная копия. Что-то вроде этого с 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 у вас должна быть резервная копия db. Сохраните его в файл или что вам нужно.

person Geli    schedule 12.07.2016

Сначала вы должны войти в свою базу данных как администратор, а затем вернуться к резервной базе данных.

С уважением, ФТК.

person FTK    schedule 13.06.2016