問題
你連接到一個外部MySQL metastore和試圖創建一個表,當你得到一個錯誤。
AnalysisException: org.apache.hadoop.hive.ql.metadata。HiveException: MetaException(信息:是拋出一個異常時添加/驗證類(es):(康涅狄格州= 21)列長度太大列“PARAM_VALUE”(max = 16383);使用BLOB或文本。
導致
這是一個已知的問題使用MySQL 8.0默認的字符集utfmb4。
你可以證實這一點上運行一個查詢的數據庫錯誤。
% sql SELECT default_character_set_name information_schema。圖式年代schema_name = " <數據庫名稱>”
解決方案
你需要更新或重新創建數據庫和設置字符集latin1。
選項1
- 手動運行創建語句在蜂房裏的數據庫默認字符集= latin1在每個創建表聲明。
% sql創建表“TABLE_PARAMS”(“TBL_ID”BIGINT不是NULL, PARAM_KEY的VARCHAR(256)二進製NOT NULL, PARAM_VALUE的VARCHAR(4000)二進製零約束TABLE_PARAMS_PK的主鍵(“TBL_ID”、“PARAM_KEY”))引擎= INNODB默認字符集= latin1;中的一個
- 重新啟動蜂巢metastore和重複,直到所有創建錯誤已經得到解決。
選項2
- 設置數據庫和用戶帳戶。
- 創建數據庫和運行改變數據庫蜂巢字符集latin1;中的一個在你啟動metastore。
這個命令設置默認字符集為數據庫。用於當metastore創建表。