解決禪道升級報錯:Column not found: 1054 Unknown column ‘readme’ in ‘zt_im_client’
The sql is: ALTER TABLE zt_im_client
CHANGE readme
changeLog
text NOT NULL
版本開源11.3升級到12.2最新版
因爲操作過幾次升級,一切按照步驟走(操作前一定要備份,真的很重要)。
當頁面執行升級sql的時候報錯了。
報錯信息如標題所示:
去禪道官網上搜索了一遍,有同樣和類似的問題,但是沒有解決方式。
去問禪道技術人員,不能及時得到解答,只能自己查原因,這裏記錄下。
既然問題出在升級的sql上,所以直接去升級源碼包裏查看sql語句:
cd /opt/zbox/app/zentao/db
grep -rl ‘redame’ ./*
./upgradexuanxuan2.4.0.sql
./upgradexuanxuan2.5.0.sql
./zentao.sql
進去查看這3個升級語句的情況。
在upgradexuanxuan2.4.0.sql和upgradexuanxuan2.5.0.sql裏分別是:
vim upgradexuanxuan2.4.0.sql
ALTER TABLE zt_im_messagestatus
ADD message
INT(11) UNSIGNED NOT NULL AFTER user
;
CREATE TABLE IF NOT EXISTS zt_im_xxcversion
(
id
int(11) unsigned NOT NULL AUTO_INCREMENT,
version
char(10) NOT NULL DEFAULT ‘’,
desc
varchar(100) NOT NULL DEFAULT ‘’,
readme
text NOT NULL,
strategy
varchar(10) NOT NULL DEFAULT ‘’,
downloads
text NOT NULL,
createdDate
datetime NOT NULL,
createdBy
varchar(30) NOT NULL DEFAULT ‘’,
editedDate
datetime NOT NULL,
editedBy
varchar(30) NOT NULL DEFAULT ‘’,
PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
vim upgradexuanxuan2.5.0.sql
UPDATE zt_config
SET key
= ‘https’ WHERE owner
= ‘system’ AND module
= ‘common’ AND section
= ‘xuanxuan’ AND key
= ‘isHttps’;
UPDATE zt_config
SET key
= ‘backendLang’ WHERE owner
= ‘system’ AND module
= ‘common’ AND section
= ‘xuanxuan’ AND key
= ‘xxbLang’;
DATE zt_grouppriv
SET module
= ‘client’, method
= ‘browse’ WHERE module
= ‘setting’ AND method
= ‘xxcversion’;
UPDATE zt_grouppriv
SET module
= ‘client’, method
= ‘create’ WHERE module
= ‘setting’ AND method
= ‘createxxcversion’;
UPDATE zt_grouppriv
SET module
= ‘client’, method
= ‘edit’ WHERE module
= ‘setting’ AND method
= ‘editxxcversion’;
UPDATE zt_grouppriv
SET module
= ‘client’, method
= ‘delete’ WHERE module
= ‘setting’ AND method
= ‘deletexxcversion’;
RENAME TABLE zt_im_xxcversion
TO zt_im_client
;
ALTER TABLE zt_im_client
CHANGE readme
changeLog
text NOT NULL;
ALTER TABLE zt_im_client
ADD status
ENUM(‘released’,‘wait’) NOT NULL DEFAULT ‘wait’ AFTER editedBy
;
問題就出在下面這段:
RENAME TABLE zt_im_xxcversion
TO zt_im_client
;
ALTER TABLE zt_im_client
CHANGE readme
changeLog
text NOT NULL;
ALTER TABLE zt_im_client
ADD status
ENUM(‘released’,‘wait’) NOT NULL DEFAULT ‘wait’ AFTER editedBy
;
數據庫裏有一個重命名的操作,我查了下自己禪道的數據庫庫表詳情(這裏記得恢復下禪道的數據庫,前面已經升級亂了)發現裏面已經存在zt_im_client這個表,而且表結構裏沒有readme這個字段的。
所以問題找到了,這個表是給啥宣萱功能用的,實際上沒有用這個的話,裏面是沒有數據的。
我在upgradexuanxuan2.5.0.sql升級表裏加了一句
DROP TABLE IF EXISTS zt_im_client
;
vim upgradexuanxuan2.5.0.sql
DROP TABLE IF EXISTS zt_im_client
;
RENAME TABLE zt_im_xxcversion
TO zt_im_client
;
ALTER TABLE zt_im_client
CHANGE readme
changeLog
text NOT NULL;
ALTER TABLE zt_im_client
ADD status
ENUM(‘released’,‘wait’) NOT NULL DEFAULT ‘wait’ AFTER editedBy
;
保存,然後重新操作升級頁面。
OK,升級完成。
另外,還有一個問題 11.3版本在Ubuntu18上運行,禪道數據庫會崩掉。這個注意下。