合并代码

This commit is contained in:
lhx
2026-01-20 00:39:46 +00:00
parent 9af4766b31
commit a7b7a786a5
4 changed files with 420 additions and 354 deletions

View File

@@ -38,7 +38,7 @@ class DailyDataService(BaseService[DailyData]):
批量创建记录,支持两种输入格式: 批量创建记录,支持两种输入格式:
- List[DailyData]:模型实例列表 - List[DailyData]:模型实例列表
- List[dict]:字典列表(自动转换为实例) - List[dict]:字典列表(自动转换为实例)
通过 (account_id, NYID) 联合判断是否已存在,存在则忽略 通过 (account_id, NYID) 联合判断是否已存在,存在则忽略 --(暂时取消查重)
""" """
try: try:
data_list = self._ensure_instances(data) data_list = self._ensure_instances(data)
@@ -56,23 +56,26 @@ class DailyDataService(BaseService[DailyData]):
logger.warning("批量创建失败:所有记录缺少 account_id 或 NYID") logger.warning("批量创建失败:所有记录缺少 account_id 或 NYID")
return [] return []
existing_pairs: Set[Tuple[int, int]] = {
(item.account_id, item.NYID) # 取消查重处理
for item in db.query(DailyData.account_id, DailyData.NYID) # existing_pairs: Set[Tuple[int, int]] = {
.filter(DailyData.account_id.in_([p[0] for p in target_pairs]), # (item.account_id, item.NYID)
DailyData.NYID.in_([p[1] for p in target_pairs])) # for item in db.query(DailyData.account_id, DailyData.NYID)
.all() # .filter(DailyData.account_id.in_([p[0] for p in target_pairs]),
} # DailyData.NYID.in_([p[1] for p in target_pairs]))
# .all()
# }
to_create = [ to_create = [
item for item in data_list item for item in data_list
if (item.account_id, item.NYID) not in existing_pairs # if (item.account_id, item.NYID) not in existing_pairs
] ]
ignored_count = len(data_list) - len(to_create) # ignored_count = len(data_list) - len(to_create)
if ignored_count > 0: # if ignored_count > 0:
logger.info(f"批量创建时忽略{ignored_count}条已存在记录account_id和NYID已存在") # logger.info(f"批量创建时忽略{ignored_count}条已存在记录account_id和NYID已存在")
logger.info(f"批量创建 {to_create}")
if not to_create: if not to_create:
return [] return []

36
fix_mysql.sh Normal file
View File

@@ -0,0 +1,36 @@
#!/bin/bash
echo "=== 修复 MySQL 监听配置 ==="
# 1. 备份配置文件
sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.backup.$(date +%Y%m%d_%H%M%S)
echo "✅ 已备份配置文件"
# 2. 修改 bind-address
sudo sed -i 's/^bind-address.*127.0.0.1/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
echo "✅ 已修改 bind-address"
# 3. 显示修改后的配置
echo ""
echo "修改后的配置:"
sudo grep "bind-address" /etc/mysql/mysql.conf.d/mysqld.cnf
echo ""
# 4. 重启 MySQL
echo "正在重启 MySQL..."
sudo systemctl restart mysql
sleep 2
# 5. 验证
echo ""
echo "验证 MySQL 监听状态:"
sudo netstat -tlnp | grep 3306
echo ""
# 6. 测试连接
DOCKER0_IP=$(ip addr show docker0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
echo "测试从本机连接 MySQL (IP: $DOCKER0_IP):"
mysql -h $DOCKER0_IP -u railway -p'Railway01.' -e "SELECT 'Connection OK' as status, DATABASE() as current_db, VERSION() as version;" 2>&1
echo ""
echo "=== 修复完成 ==="

27
test_connection.sh Normal file
View File

@@ -0,0 +1,27 @@
#!/bin/bash
echo "=== Docker 网络诊断 ==="
echo ""
echo "1. Docker0 网桥 IP:"
ip addr show docker0 2>/dev/null | grep -oP '(?<=inet\s)\d+(\.\d+){3}' || echo "❌ docker0 不存在"
echo ""
echo "2. MySQL 监听状态:"
sudo netstat -tlnp | grep 3306 || echo "❌ MySQL 未运行或未监听 3306"
echo ""
echo "3. MySQL 用户权限:"
mysql -u root -p -e "SELECT user, host FROM mysql.user WHERE user='railway';" 2>/dev/null || echo "❌ 无法查询(需要 root 密码)"
echo ""
echo "4. 测试从容器连接 MySQL:"
DOCKER0_IP=$(ip addr show docker0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
if [ ! -z "$DOCKER0_IP" ]; then
docker run --rm mysql:8.0 mysql -h $DOCKER0_IP -u railway -p'Railway01.' -e "SELECT 'OK' as status;" 2>&1
else
echo "❌ 无法获取 docker0 IP"
fi
echo ""
echo "=== 诊断完成 ==="