From dcf1baa2c223d0d3651e2a73df3def47e28a50c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Tue, 23 Jun 2026 17:12:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(update):=20bugcollect=20=E5=BB=BA=E5=BA=93?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=97=B6=E6=89=93=E5=8D=B0=E8=AF=A6=E7=BB=86?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原来 2>/dev/null 把 mysql 错误吞掉导致无法排查; 改为捕获 stderr 并在失败时通过 warn 输出,同时打印 container/db/user 便于逐步排查凭据读取问题。 Co-Authored-By: Claude Sonnet 4.6 --- scripts/update.sh | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/scripts/update.sh b/scripts/update.sh index 5788648..c4350f7 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -515,18 +515,24 @@ if grep -q 'bugcollect-service:' "$ROOT_DIR/docker-compose.yml" 2>/dev/null; the _mysql_ctr="$(docker ps --filter name=mysql --filter status=running --format '{{.Names}}' 2>/dev/null | head -1)" if [ -n "$_mysql_ctr" ]; then _bc_db="${BUGCOLLECT_DB:-xuqm_bugcollect}" - _mysql_root_pw="$(grep '^MYSQL_ROOT_PASSWORD=' "$ROOT_DIR/config/secrets.env" 2>/dev/null | cut -d= -f2-)" - _mysql_user="$(grep '^MYSQL_USERNAME=' "$ROOT_DIR/config/secrets.env" 2>/dev/null | cut -d= -f2-)" - [ -z "$_mysql_user" ] && _mysql_user="$(grep '^MYSQL_USER=' "$ROOT_DIR/config/secrets.env" 2>/dev/null | cut -d= -f2-)" + _secrets="$ROOT_DIR/config/secrets.env" + _mysql_root_pw="$(grep '^MYSQL_ROOT_PASSWORD=' "$_secrets" 2>/dev/null | cut -d= -f2-)" + _mysql_user="$(grep '^MYSQL_USERNAME=' "$_secrets" 2>/dev/null | cut -d= -f2-)" + [ -z "$_mysql_user" ] && _mysql_user="$(grep '^MYSQL_USER=' "$_secrets" 2>/dev/null | cut -d= -f2-)" + info "建库检查: container=${_mysql_ctr} db=${_bc_db} user=${_mysql_user}" if [ -n "$_mysql_root_pw" ] && [ -n "$_mysql_user" ]; then - docker exec "$_mysql_ctr" mysql -u root -p"${_mysql_root_pw}" -e \ + _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>/dev/null \ - && ok "数据库 ${_bc_db} 已就绪" \ - || warn "数据库 ${_bc_db} 初始化失败,请手动执行 GRANT" + FLUSH PRIVILEGES;" 2>&1)" + if [ $? -eq 0 ]; then + ok "数据库 ${_bc_db} 已就绪" + else + warn "数据库 ${_bc_db} 初始化失败,请手动执行 GRANT" + warn " 错误: ${_db_init_err}" + fi else - warn "无法读取 MySQL root 密码或用户名,请手动创建 ${_bc_db} 数据库并授权" + warn "无法读取 MySQL root 密码或用户名(secrets.env 中未找到 MYSQL_ROOT_PASSWORD / MYSQL_USERNAME),请手动创建 ${_bc_db} 数据库并授权" fi else warn "MySQL 容器未运行(external 模式),请确保数据库 ${BUGCOLLECT_DB:-xuqm_bugcollect} 已存在并授权"