fix(update): target compose-managed database exactly
这个提交包含在:
父节点
7feafd4643
当前提交
4d595edcae
@ -16,6 +16,9 @@
|
||||
必需的数据库/Redis 密码缺失才会在修改容器前给出明确失败信息。
|
||||
- 业务升级只拉取 Xuqm 应用镜像,不再无条件拉取 MySQL、Redis 与 nginx 的
|
||||
Docker Hub 基础镜像,避免内网环境长时间阻塞并防止基础设施被意外换版。
|
||||
- BugCollect 建库与 schema 预检只使用当前 Compose 项目的 MySQL 服务,不再按
|
||||
容器名模糊匹配宿主机上的其他数据库;预检失败会进入明确告警分支而非被
|
||||
`set -e` 无提示中断。
|
||||
|
||||
## 2026.06.18-private.1
|
||||
|
||||
|
||||
@ -558,7 +558,9 @@ done
|
||||
if grep -q 'bugcollect-service:' "$ROOT_DIR/docker-compose.yml" 2>/dev/null; then
|
||||
|
||||
# 确保 xuqm_bugcollect 数据库存在且授权正确(旧部署升级时数据库可能从未创建)
|
||||
_mysql_ctr="$(docker ps --filter name=mysql --filter status=running --format '{{.Names}}' 2>/dev/null | head -1)"
|
||||
# 只允许使用当前 Compose 项目的 mysql 服务,禁止通过名称模糊匹配误选宿主机上
|
||||
# 其他系统的 MySQL/Kingbase 兼容容器。
|
||||
_mysql_ctr="$($_COMPOSE ps -q mysql 2>/dev/null | head -1 || true)"
|
||||
if [ -n "$_mysql_ctr" ]; then
|
||||
_bc_db="${BUGCOLLECT_DB:-xuqm_bugcollect}"
|
||||
_secrets="$ROOT_DIR/config/secrets.env"
|
||||
@ -570,11 +572,10 @@ if grep -q 'bugcollect-service:' "$ROOT_DIR/docker-compose.yml" 2>/dev/null; the
|
||||
[ -z "$_mysql_user" ] && _mysql_user="xuqm"
|
||||
info "建库检查: container=${_mysql_ctr} db=${_bc_db} user=${_mysql_user}"
|
||||
if [ -n "$_mysql_root_pw" ] && [ -n "$_mysql_user" ]; then
|
||||
_db_init_err="$(docker exec "$_mysql_ctr" mysql -u root -p"${_mysql_root_pw}" -e \
|
||||
if _db_init_err="$(docker exec "$_mysql_ctr" mysql -u root -p"${_mysql_root_pw}" -e \
|
||||
"CREATE DATABASE IF NOT EXISTS \`${_bc_db}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
GRANT ALL PRIVILEGES ON \`${_bc_db}\`.* TO '${_mysql_user}'@'%';
|
||||
FLUSH PRIVILEGES;" 2>&1)"
|
||||
if [ $? -eq 0 ]; then
|
||||
FLUSH PRIVILEGES;" 2>&1)"; then
|
||||
ok "数据库 ${_bc_db} 已就绪"
|
||||
else
|
||||
warn "数据库 ${_bc_db} 初始化失败,请手动执行 GRANT"
|
||||
@ -622,9 +623,8 @@ SET @_add_lsm = IF(
|
||||
PREPARE _s FROM @_add_lsm; EXECUTE _s; DEALLOCATE PREPARE _s;
|
||||
REPAIR_SQL
|
||||
)"
|
||||
_repair_err="$(docker exec "$_mysql_ctr" mysql -u root -p"${_mysql_root_pw}" \
|
||||
"$_bc_db" -e "$_schema_repair_sql" 2>&1)"
|
||||
if [ $? -eq 0 ]; then
|
||||
if _repair_err="$(docker exec "$_mysql_ctr" mysql -u root -p"${_mysql_root_pw}" \
|
||||
"$_bc_db" -e "$_schema_repair_sql" 2>&1)"; then
|
||||
ok "bugcollect schema 预检通过(已补全所有缺失列)"
|
||||
else
|
||||
warn "bugcollect schema 预检失败,服务启动可能报错"
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户