1. 程式人生 > 其它 >資料庫自動化平臺archery配置TiDB導致工單無法執行

資料庫自動化平臺archery配置TiDB導致工單無法執行

在資料庫自動化平臺,可以新增很多型別資料庫,mysql,oracle,redis,SqlServer,TiDB等

但是,TiDB新增完,提交工單後,在執行工單時,會提示read_only=1的問題:

例項read_only=1,禁止執行變更語句!

解決方法如下:

方法一:

註釋sql/engines/mysql.py 以下語句,然後重啟服務和Django-Q

def execute_workflow(self, workflow):
"""執行上線單,返回Review set"""
# 判斷例項是否只讀
#read_only = self.query(sql='select @@read_only;').rows[0][0]
#if read_only: # result = ReviewSet( # full_sql=workflow.sqlworkflowcontent.sql_content, # rows=[ReviewResult(id=1, errlevel=2, # stagestatus='Execute Failed', # errormessage='例項read_only=1,禁止執行變更語句!', # sql=workflow.sqlworkflowcontent.sql_content)]) # result.error = '例項read_only=1,禁止執行變更語句!', # return result

方法二:

修改sql/engines/mysql.py,新增三行加粗程式碼,下面程式碼記得縮排:

def execute_workflow(self, workflow):
        """執行上線單,返回Review set"""
        db_version = self.query(sql='select @@version;').rows[0][0]   # 檢視資料庫版本
        db_version_check = re.search("TiDB",db_version)               # 資料庫版本為TiDB
        if not db_version_check:
# 判斷如果資料庫版本不是TiDB,執行下面read_only檢查
# 判斷例項是否只讀 read_only = self.query(sql='select @@read_only;').rows[0][0] if read_only: result = ReviewSet( full_sql=workflow.sqlworkflowcontent.sql_content, rows=[ReviewResult(id=1, errlevel=2, stagestatus='Execute Failed', errormessage='例項read_only=1,禁止執行變更語句!', sql=workflow.sqlworkflowcontent.sql_content)]) result.error = '例項read_only=1,禁止執行變更語句!', return result

重啟Django-Q如下:

kill supervisord,gunicorn,manage:

ps -ef | grep supervisord | grep -v grep | awk -F ' ' '{print $2}' | xarges kill -9

ps -ef | grep gunicorn | grep -v grep | awk -F ' ' '{print $2}' | xarges kill -9

ps -ef | grep manage | grep -v grep | awk -F ' ' '{print $2}' | xarges kill -9

到venv4archery目錄下,執行source,並啟動Django:

[root@hankyoon venv4archery]# pwd
/data/apps/archery/venv4archery

[root@hankyoon venv4archery]# source bin/activate

[root@hankyoon venv4archery]# pwd
/data/apps/archery

[root@hankyoon venv4archery]# ./startup.sh

重啟inception:

su - archery
cd /data/apps/inception && ./bin/Inception --defaults-file=./etc/in.cnf &