資料庫自動化平臺archery配置TiDB導致工單無法執行
阿新 • • 發佈:2022-04-19
在資料庫自動化平臺,可以新增很多型別資料庫,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 &