Если имеется дамп базы, то для миграции нуобходимо его развернуть (версии postgres для дамп и новой базы должны совпадать):
sudo su - psql
createdb odoo7db
cd /home/diga/*PATH_TO_DUMP_DATABASE*
psql odoo7db < odoo7db.dump
psql -l
- в таблице должна отображаться новая база.
Владелец базы должен совпадать с текущим владельцем. Если это не так, необходимо поменять владельца:
psql
ALTER DATABASE odoo7db OWNER TO diga;
- Модуль должен быть обязательно портирован в новую версию
- При необходимости для модуля нужно дописать миграционные скрипты
В терминале:
- Create directory openupgrade
mkdir /var/tmp/openupgrade
- Open folder
cd /var/tmp/openupgrade
- Download migrate.py from module openupgrade odoo 11
wget https://raw.githubusercontent.com/OCA/OpenUpgrade/11.0/scripts/migrate.py
sudo chmod 777 migrate.py
- Moved the config file to the same folder as migrate.py
sudo cp /etc/odoo-server.conf /var/tmp/openupgrade
sudo chmod 777 odoo-server.conf
- В конфиге файле необходимо указать
db_user=diga
- Install odoo 8 requirements libs
- Run migrate with reguler user not root or using sudo
python migrate.py --config=odoo-server.conf --database=odoo7db --run-migrations=8.0
- Изучить Module coverage и в случае необходимости обновите в addons перенесенные модули и перезапустите скрипт.
- Переименуйте мигрированную базу odoo7db_migrated
sudo su - postgres
psql
ALTER DATABASE odoo7db_migrated RENAME TO odoo8db;
Для просмотра логов миграци запустите tail -f /var/tmp/openupgrade/migration.log
и в случае необходимости исправьте ошибки.
- Запустите сервер Odoo
./openerp-server -c ~/.openerp_serverrc-8 -d odoo8db
- Изучите логи и удалите лишние модули (можно добавить новый ключ --unistall со списком модулей которые нужно удалить, в odoo нет такой функции нужно самому дописывать.
Я использовал существующий ключ -u
для удаления модулей. Например::
Запустил сервер: -u remove
в loading.py
:
REMOVE_MODULES=['budget', 'custom_report'] if 'remove' in tools.config['update']: for m in REMOVE_MODULES: cr.execute("update ir_module_module set state=%s where name=%s", ('to remove', m))
После чего перезапустил сервер и все указанные модули удалились. После того как удалили лишние модули необхоидмо обновить все остальное с ключем -u all