How Can We Help?

使用 Openupgrade 升級 Odoo 8.0

You are here:
< All Topics

這篇教學是用來記錄自己兩次使用 OpenUpgrade 升級 OpenERP 7.0 至 8.0 的流程

建議準備獨立的環境進行升級,並將套件都更新到最新版,減少出錯的機率

 

前置準備作業

安裝必要元件,並更新套件

此處不確定 openerp-client-lib 是否為必裝元件

sudo apt-get install -y git
sudo easy_install decorator requests pyPdf passlib openerp-client-lib openupgradelib
sudo apt-get upgrade
sudo chown -R openerp: /opt/openerp
升級 OpenERP 至最新版本,並更新模組

非必要,但建議執行,減少出錯機率

sudo su - openerp -s /bin/bash
vi /opt/openerp/server/install/openerp-server.conf
cd /opt/openerp/server
./openerp-server -d db_name --update=all
下載 OpenUpgrade
cd /var/tmp
git clone --branch 8.0 https://github.com/OpenUpgrade/OpenUpgrade.git
mkdir -p /var/tmp/openupgrade/8.0/
ln -s /var/tmp/OpenUpgrade /var/tmp/openupgrade/8.0/server

升級流程

準備資料庫

備份需要升級的資料庫,並傳至 Openupgrade 主機後 Restore 至 Postgresql 中

Dump
pg_dump Clone -U cewolf -f db_name.sql

SCP
scp db_name.sql cewolf@192.168.1.239:~

Restore
psql -U cewolf -d Odoo8 < db_name.sql
進行升級
cd /var/tmp/openupgrade/8.0/server/
wget https://raw.githubusercontent.com/OpenUpgrade/OpenUpgrade/HEAD/scripts/migrate.py
python migrate.py --config=/etc/openerp-server.conf --database=db_name --run-migrations=8.0
檢查 Migration Log => 修正錯誤

根據經驗,升級通常不會一次就成功,尤其是有進行過客製化後,更需要修正,這時可以藉由 migration.log 來判斷該如何處理

檔案位置
/var/tmp/openupgrade/migration.log

Migration Log 包含了四種類型的紀錄

INFO:系統訊息(不重要)
DEBUG:進行修改的SQL語法
WARNING:一些警告,通常可以忽略
ERROR:錯誤訊息,如果跳 ERROR 之後還能執行,那就是可以忽略得 ERROR,如果會中斷 Migration 流程,必須優先解決

如果 Migration Log 最後幾行顯示的是

2016-02-26 11:34:15,528 23380 INFO Hanyu_migrated openerp.modules.loading: Modules loaded.
2016-02-26 11:34:15,531 23380 INFO Hanyu_migrated openerp.models: Computing parent left and right for table ir_ui_menu...
2016-02-26 11:34:15,720 23380 INFO Hanyu_migrated openerp.models: Computing parent left and right for table stock_location...
2016-02-26 11:34:15,738 23380 INFO Hanyu_migrated openerp.service.server: Initiating shutdown
2016-02-26 11:34:15,738 23380 INFO Hanyu_migrated openerp.service.server: Hit CTRL-C again or send a second signal to force the shutdown.

據經驗這表示已經升級完成了!

After Migration

好不容易完成升級了,接下來需要把升級完成的資料庫備份並轉移到 Odoo 8 的環境下

根據目前的經驗,剛升級完成的資料庫無法使用 Odoo 內建的 Restore 還原

必須使用 PSQL 還原後,再透過 odoo8 的 –update=all 指令進行完整升級(參照 After migration

Dump
pg_dump Hanyu_migrated -U cewolf -O -f migrated.sql

SCP
scpmigrated.sql cewolf@192.168.1.242:~

PSQL Restore Database
psql -U cewolf -d Odoo8 < migrated.sql

使用 DB owner 執行下列語法
/usr/bin/openerp-server -d Hv8 --update=all

看到了這行表示更新完成了
2016-03-02 10:30:47,525 1642 INFO Hv8 openerp.modules.loading: Modules loaded.
2016-03-02 10:30:47,528 1642 INFO Hv8 openerp.models: Computing parent left and right for table ir_ui_menu...
第二個資料庫的升級前修正
  • 使用 Database_Cleanup 模組清除全部資料,完成後移除 Database_cleanup
  • 從基本模組 Base, Process, Decimal_precision, mail 等更新模組(主要是 Product 模組)
  • 刪除多出的 Warehouse
  • 將停用的地點啟用,並整理 Location 結構
  • Location output, stock 要重新建立 Parent location
  • Sale 模組中有兩個 shop ,需要刪除一個,並且確認餘下的 Shop 是否有設定 Warehouse
  • Account 模組中 STJ 帳冊需改名為 SSTJ
第二個資料庫的升級後修正
  • 因 8.0 新增了 product.template ,所以 7.0 中針對 product 設定的預設值全都需要重新設定一次
  • 設定 Report Font
  • 使用 Database_cleanup 刪除 base_status、process 這兩個模組(8.0 已不需要這兩個模組)

參考資料:

After migration

Automated migration script

Db migrated to odoo 8, update stuck at computing ir_ui_menu parent_left and parent_right

Table of Contents