LiveAgent 5.9.5からのアップデート時に発生する「Failed to execute SQL」エラーの修正方法

LiveAgentのアップデート時に「Failed to execute SQL」エラーが発生し、インストーラーがバージョン5.9.5で停止している場合、データベースのテーブルのストレージエンジンや照合順序(collation)が正しく設定されていない可能性があります。LiveAgentは、すべてのデータベーステーブルがInnoDB ストレージエンジン(MyISAMを使用するqu_la_conversations_searchを除く)を使用し、データベースおよびすべてのテーブルとカラムが照合順序utf8_general_ci(アプリケーションによってutf8mb4_general_ciutf8mb4_binascii_binに変更される一部の特定カラムを除く)を使用することを必要とします。

データベース、テーブル、カラムを正しい形式に変換する手順:

  1. データベースをバックアップする

  2. LiveAgentのデータベースの照合順序を確認する。照合順序がutf8_general_ciでない場合は、以下のコマンドを実行する(<db_name>をデータベース名に置き換えてください)

ALTER DATABASE <db_name> CHARACTER SET utf8 COLLATE utf8_general_ci;
  1. 以下のステートメントを実行して、utf8に変換が必要なテーブルを確認する。出力が空でない場合は、結果として生成されたすべてのALTER TABLEステートメントをコピーしてデータベースで実行する。
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," CHARACTER SET utf8 COLLATE utf8_general_ci;")  
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='<db_name>'
AND TABLE_TYPE="BASE TABLE"
AND TABLE_COLLATION NOT IN ('utf8_general_ci', 'utf8mb3_general_ci', 'utf8mb4_general_ci')
  1. 以下を実行して、utf8に変換が必要なカラムを確認する。出力が空でない場合は、結果として生成されたすべてのALTER TABLEステートメントをコピーしてデータベースで実行する。
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME, " CHANGE ", COLUMN_NAME , " ", COLUMN_NAME, " ", DATA_TYPE, CASE WHEN DATA_TYPE IN ('text','longtext','tinytext','mediumtext') THEN "" ELSE CONCAT ("(", CHARACTER_MAXIMUM_LENGTH, ")") END, " CHARACTER SET utf8 COLLATE utf8_general_ci;" )
FROM information_schema.columns
WHERE table_schema = '<db_name>'
AND COLLATION_NAME NOT IN ('utf8_general_ci', 'utf8_unicode_ci', 'utf8mb3_general_ci', 'utf8mb3_unicode_ci', 'utf8mb4_general_ci', 'utf8mb4_unicode_ci', 'utf8_bin', 'utf8mb3_bin', 'utf8mb4_bin', 'ascii_bin')
ORDER BY table_name,ordinal_position
  1. 以下を実行して、ストレージエンジンInnoDBへの変換が必要なMyISAMテーブルを確認する。出力が空でない場合は、結果として生成されたすべてのALTER TABLEステートメントをコピーしてデータベースで実行する。注意:大きなテーブルを変換する場合は時間がかかります。MySQLがテーブル全体のコピーを作成するため、業務時間外に実行することをお勧めします。
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," ENGINE = InnoDB;")
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='<db_name>'
AND TABLE_TYPE="BASE TABLE"
AND ENGINE = 'MyIsam'
AND TABLE_NAME != 'qu_la_conversations_search'

手順1〜5が完了したら、LiveAgentのインストーラーを再度実行してください。今度はエラーなく処理が続行されるはずです。