2025-07-29 22:52:23,316 - __main__ - INFO - 开始测试数据库服务... 2025-07-29 22:52:23,316 - api.services.database_service - INFO - 尝试连接数据库 (使用配置文件中的设置): {} 2025-07-29 22:52:23,317 - api.services.database_service - ERROR - 数据库连接尝试 (使用配置文件中的设置) 失败: Failed getting connection; pool exhausted Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 654, in get_connection cnx = self._cnx_queue.get(block=False) File "/usr/lib/python3.10/queue.py", line 168, in get raise Empty _queue.Empty The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/travel/src/api/TravelContentCreator/api/services/database_service.py", line 78, in _init_db_pool with pool.get_connection() as conn: File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 656, in get_connection raise PoolError("Failed getting connection; pool exhausted") from err mysql.connector.errors.PoolError: Failed getting connection; pool exhausted 2025-07-29 22:52:23,317 - api.services.database_service - INFO - 尝试连接数据库 (使用明确的密码): {} 2025-07-29 22:52:23,360 - api.services.database_service - ERROR - 数据库连接尝试 (使用明确的密码) 失败: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 354, in _open_connection self._cmysql.connect(**cnx_kwargs) _mysql_connector.MySQLInterfaceError: Access denied for user 'root'@'localhost' (using password: YES) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/travel/src/api/TravelContentCreator/api/services/database_service.py", line 71, in _init_db_pool pool = pooling.MySQLConnectionPool( File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 490, in __init__ self.add_connection() File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 613, in add_connection cnx = connect(**self._cnx_config) # type: ignore[assignment] File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 322, in connect return CMySQLConnection(*args, **kwargs) File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 142, in __init__ self.connect(**kwargs) File "/usr/local/lib/python3.10/dist-packages/mysql/connector/abstracts.py", line 1604, in connect self._open_connection() File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 360, in _open_connection raise get_mysql_exception( mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 2025-07-29 22:52:23,360 - api.services.database_service - INFO - 尝试连接数据库 (使用空密码): {} 2025-07-29 22:52:23,402 - api.services.database_service - ERROR - 数据库连接尝试 (使用空密码) 失败: 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 354, in _open_connection self._cmysql.connect(**cnx_kwargs) _mysql_connector.MySQLInterfaceError: Access denied for user 'root'@'localhost' (using password: NO) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/travel/src/api/TravelContentCreator/api/services/database_service.py", line 71, in _init_db_pool pool = pooling.MySQLConnectionPool( File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 490, in __init__ self.add_connection() File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 613, in add_connection cnx = connect(**self._cnx_config) # type: ignore[assignment] File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 322, in connect return CMySQLConnection(*args, **kwargs) File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 142, in __init__ self.connect(**kwargs) File "/usr/local/lib/python3.10/dist-packages/mysql/connector/abstracts.py", line 1604, in connect self._open_connection() File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 360, in _open_connection raise get_mysql_exception( mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 2025-07-29 22:52:23,402 - api.services.database_service - INFO - 尝试连接数据库 (使用auth_plugin): {'auth_plugin': 'mysql_native_password'} 2025-07-29 22:52:23,443 - api.services.database_service - ERROR - 数据库连接尝试 (使用auth_plugin) 失败: 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 354, in _open_connection self._cmysql.connect(**cnx_kwargs) _mysql_connector.MySQLInterfaceError: Access denied for user 'root'@'localhost' (using password: NO) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/travel/src/api/TravelContentCreator/api/services/database_service.py", line 71, in _init_db_pool pool = pooling.MySQLConnectionPool( File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 490, in __init__ self.add_connection() File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 613, in add_connection cnx = connect(**self._cnx_config) # type: ignore[assignment] File "/usr/local/lib/python3.10/dist-packages/mysql/connector/pooling.py", line 322, in connect return CMySQLConnection(*args, **kwargs) File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 142, in __init__ self.connect(**kwargs) File "/usr/local/lib/python3.10/dist-packages/mysql/connector/abstracts.py", line 1604, in connect self._open_connection() File "/usr/local/lib/python3.10/dist-packages/mysql/connector/connection_cext.py", line 360, in _open_connection raise get_mysql_exception( mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 2025-07-29 22:52:23,444 - api.services.database_service - ERROR - 所有数据库连接尝试都失败了 2025-07-29 22:52:23,444 - __main__ - ERROR - 数据库连接不可用 2025-07-29 22:57:52,603 - __main__ - INFO - 开始测试数据库服务... 2025-07-29 22:57:52,603 - api.services.database_service - WARNING - 配置管理器中未找到数据库配置 2025-07-29 22:57:52,603 - api.services.database_service - INFO - 直接从配置文件加载数据库配置成功 2025-07-29 22:57:52,603 - api.services.database_service - INFO - 尝试连接数据库: {'host': 'localhost', 'user': 'root', 'database': 'travel_content', 'port': 3306, 'charset': 'utf8mb4', 'pool_size': 10, 'max_retry_attempts': 3, 'query_timeout': 30, 'soft_delete_field': 'isDelete', 'active_record_value': 0} 2025-07-29 22:57:53,016 - api.services.database_service - INFO - 数据库连接测试成功,测试结果: (1,) 2025-07-29 22:57:53,017 - api.services.database_service - INFO - 数据库连接池初始化成功,连接池大小: 10 2025-07-29 22:57:53,017 - api.services.database_service - INFO - 数据库服务初始化成功 2025-07-29 22:57:53,017 - __main__ - INFO - 数据库连接正常 2025-07-29 22:57:53,017 - __main__ - INFO - 测试景区查询... 2025-07-29 22:57:53,017 - api.services.database_service - DEBUG - 查询景区信息: ID=1950099498923552770 2025-07-29 22:57:53,018 - api.services.database_service - INFO - 成功找到景区信息: ID=1950099498923552770, 名称=吴山广场景区 2025-07-29 22:57:53,018 - __main__ - INFO - 成功查询到景区: {'id': 1950099498923552770, 'userId': 1945869111411052546, 'name': '吴山广场景区', 'address': '浙江省杭州市上城区吴山路上天竺路2号', 'trafficInfo': '杭州地铁1号线定安路站下车步行5分钟可达', 'description': '吴山广场是杭州市区重要的人文景观区,包含城隍阁、纪念馆等多个景点,是了解杭州历史文化的重要窗口', 'advantage': '城市制高点,可俯瞰西湖全景,历史人文景观丰富', 'highlight': '登高望远,城隍阁游览,民俗文化体验', 'isPublic': 0, 'isDelete': 0, 'createTime': datetime.datetime(2025, 7, 29, 15, 42, 6), 'updateTime': datetime.datetime(2025, 7, 29, 15, 42, 6)} 2025-07-29 22:57:53,018 - api.services.database_service - DEBUG - 批量查询景区信息: IDs=[1950099498923552770, 1950099498923552771] 2025-07-29 22:57:53,019 - api.services.database_service - INFO - 批量查询景区信息: 请求2个,找到2个 2025-07-29 22:57:53,019 - __main__ - INFO - 批量查询景区结果: 找到2个景区 2025-07-29 22:57:53,019 - __main__ - INFO - 测试产品查询... 2025-07-29 22:57:53,019 - api.services.database_service - DEBUG - 查询产品信息: ID=1 2025-07-29 22:57:53,020 - api.services.database_service - INFO - 成功找到产品信息: ID=1, 名称=黄山亲子三日游 2025-07-29 22:57:53,020 - __main__ - INFO - 成功查询到产品: {'id': 1, 'userId': 1, 'productName': '黄山亲子三日游', 'originPrice': '2199.00', 'realPrice': '1899.00', 'packageInfo': ' 含往返交通、住宿、门票、导游', 'salesPeriod': '2025-01-01至2025-12-31', 'stock': 1000, 'keyAdvantages': '一价全包,无隐形消 费,亲子互动环节丰富', 'highlights': '登顶观日出,泡温泉,亲子科普活动', 'detailedDescription': '黄山三日亲子游,含住宿、餐饮、交通、门票等,专业导游全程陪同,设计多个亲子互动环节,让孩子在游玩中学习自然知识。', 'createTime': datetime.datetime(2025, 7, 11, 10, 51, 15), 'updateTime': datetime.datetime(2025, 7, 11, 10, 51, 15), 'usageRules': None, 'surcharge': None, 'reservation': None, 'refund': None, 'discounts': None, 'isPublic': 1, 'isDelete': 0} 2025-07-29 22:57:53,020 - api.services.database_service - DEBUG - 批量查询产品信息: IDs=[1, 2, 3, 999] 2025-07-29 22:57:53,020 - api.services.database_service - WARNING - 部分产品ID未找到: {999} 2025-07-29 22:57:53,021 - api.services.database_service - INFO - 使用兜底产品数据: 1个 2025-07-29 22:57:53,021 - api.services.database_service - INFO - 批量查询产品信息: 请求4个,找到4个 2025-07-29 22:57:53,021 - __main__ - INFO - 批量查询产品结果: 找到4个产品 2025-07-29 22:57:53,021 - __main__ - INFO - 测试列表查询... 2025-07-29 22:57:53,021 - api.services.database_service - DEBUG - 获取景区列表: user_id=None, is_public=None 2025-07-29 22:57:53,021 - api.services.database_service - INFO - 获取景区列表: 找到6个景区 2025-07-29 22:57:53,021 - __main__ - INFO - 所有景区数量: 6 2025-07-29 22:57:53,021 - api.services.database_service - DEBUG - 获取产品列表: user_id=None, is_public=None 2025-07-29 22:57:53,022 - api.services.database_service - INFO - 获取产品列表: 找到16个产品 2025-07-29 22:57:53,022 - __main__ - INFO - 所有产品数量: 16 2025-07-29 22:57:53,022 - __main__ - INFO - 测试按名称查询... 2025-07-29 22:57:53,022 - api.services.database_service - DEBUG - 根据名称查询景区ID: 吴山广场景区 2025-07-29 22:57:53,023 - api.services.database_service - INFO - 找到景区ID: 吴山广场景区 -> 1950099498923552770 2025-07-29 22:57:53,023 - __main__ - INFO - 按名称查询景区ID: 1950099498923552770 2025-07-29 22:57:53,023 - api.services.database_service - DEBUG - 根据名称查询产品ID: 黄山亲子三日游 2025-07-29 22:57:53,024 - api.services.database_service - INFO - 找到产品ID: 黄山亲子三日游 -> 1 2025-07-29 22:57:53,024 - __main__ - INFO - 按名称查询产品ID: 1 2025-07-29 22:57:53,024 - __main__ - INFO - 数据库服务测试完成