fix: align release table collations
This commit is contained in:
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if ! command -v docker >/dev/null || ! docker ps --format '{{.Names}}' | grep -qx 'wygj-mysql'; then
|
||||
echo "SKIP: AIHR release collation migration test requires wygj-mysql"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
MYSQL_CONTAINER="wygj-mysql"
|
||||
DB="wygj_aihr_collation_test_$$"
|
||||
|
||||
mysql() {
|
||||
docker exec -i "$MYSQL_CONTAINER" mysql -uroot -proot --default-character-set=utf8mb4 "$@"
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
mysql -e "DROP DATABASE IF EXISTS \`$DB\`;" >/dev/null 2>&1 || true
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
mysql -e "CREATE DATABASE \`$DB\` CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"
|
||||
mysql "$DB" <<'SQL'
|
||||
CREATE TABLE aihr_knowledge_info (tenant_id varchar(20) COLLATE utf8mb4_general_ci) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_knowledge_space_grant (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_knowledge_app (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_knowledge_app_space (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_knowledge_query_log (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_knowledge_admin_audit (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_learning_question (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_practice_question_feedback (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_onboard_exam (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_onboard_exam_target (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_onboard_exam_question (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_onboard_exam_attempt (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_onboard_exam_answer (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_web_search_provider (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_web_ai_query_audit (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_community_question (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_community_answer (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_incentive_rule (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
CREATE TABLE aihr_points_ledger (tenant_id varchar(20), label varchar(20)) ENGINE=InnoDB;
|
||||
SQL
|
||||
|
||||
mysql "$DB" < "$ROOT_DIR/backend/script/sql/update/aihr_20260718_release_collation_compat_mysql8.sql"
|
||||
mysql "$DB" < "$ROOT_DIR/backend/script/sql/update/aihr_20260718_release_collation_compat_mysql8.sql"
|
||||
|
||||
aligned_columns="$(mysql "$DB" -N -B -e "
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema='$DB'
|
||||
AND table_name <> 'aihr_knowledge_info'
|
||||
AND column_name IN ('tenant_id', 'label')
|
||||
AND collation_name='utf8mb4_general_ci';
|
||||
")"
|
||||
test "$aligned_columns" = '36'
|
||||
|
||||
echo "PASS: AIHR release tables inherit the target database collation and the migration is idempotent"
|
||||
Reference in New Issue
Block a user