解決禪道升級報錯:Column not found: 1054 Unknown column 'readme' in 'zt_im_client'

解決禪道升級報錯: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這個字段的。
1
1.1
所以問題找到了,這個表是給啥宣萱功能用的,實際上沒有用這個的話,裏面是沒有數據的。
我在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;

2
保存,然後重新操作升級頁面。
OK,升級完成。

另外,還有一個問題 11.3版本在Ubuntu18上運行,禪道數據庫會崩掉。這個注意下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章