2025-12-28 11:14:07,012 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:14:07,413 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:14:07,413 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:14:07,413 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:14:07,413 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:14:07,413 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:14:07,444 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:14:07,444 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:14:07,537 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:14:07,582 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:14:07,582 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:14:07,582 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:14:07,629 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:14:07,680 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:14:07,681 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:14:07,681 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:14:07,683 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:14:07,727 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:14:07,727 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:14:07,727 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:14:07,741 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:14:07,786 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:14:07,786 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:14:07,786 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:14:07,787 ERROR: 测试错误日志: 测试错误 [in d:\work\code\python\KaMiXiTong\master\test_comprehensive_fix.py:199] 2025-12-28 11:19:08,980 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:19:09,337 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:19:09,338 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:19:09,338 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:19:09,338 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:19:09,338 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:19:09,340 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:19:09,340 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:19:09,395 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:19:09,441 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:19:09,441 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:19:09,442 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:19:09,471 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:19:09,517 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:19:09,518 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:19:09,518 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:19:09,530 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:19:09,580 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:19:09,580 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:19:09,581 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:19:09,581 ERROR: Test log: Test error [in d:\work\code\python\KaMiXiTong\master\test_fix.py:91] 2025-12-28 11:23:05,320 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:23:05,908 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:23:05,908 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:23:05,908 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:23:05,908 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:23:05,908 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:23:05,911 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:23:05,911 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:31:19,328 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 11:31:19,328 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 11:31:19,730 WARNING: 登录失败 - 密码错误: admin [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:109] 2025-12-28 11:31:22,135 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 11:31:22,137 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 11:31:22,592 INFO: 登录成功 - 用户名: admin, IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:79] 2025-12-28 11:31:23,001 INFO: License search params - page: 1, per_page: 5, product_id: None, status: 1, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 11:31:23,059 INFO: License search results - total: 0, pages: 0 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 11:31:25,606 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 11:31:25,623 INFO: License search results - total: 108, pages: 11 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 11:31:41,863 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 11:31:41,873 INFO: License search results - total: 108, pages: 11 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 11:31:50,147 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 11:31:50,170 INFO: License search results - total: 118, pages: 12 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 11:32:02,967 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766892722 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:83] 2025-12-28 11:32:03,401 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 32, 2, 991938), 'expire_time': datetime.datetime(2025, 12, 29, 3, 32, 2, 991938), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 32, 2, 991938), 'update_time': datetime.datetime(2025, 12, 28, 3, 32, 2, 995941), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 136, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 129, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 32, 2, 991938), 'expire_time': datetime.datetime(2025, 12, 29, 3, 32, 2, 991938), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 32, 2, 991938), 'update_time': datetime.datetime(2025, 12, 28, 3, 32, 2, 995941), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:191] 2025-12-28 11:32:25,721 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766892745 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:83] 2025-12-28 11:32:25,784 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 32, 25, 746511), 'expire_time': datetime.datetime(2025, 12, 29, 3, 32, 25, 746511), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 32, 25, 746511), 'update_time': datetime.datetime(2025, 12, 28, 3, 32, 25, 747505), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 136, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 129, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 32, 25, 746511), 'expire_time': datetime.datetime(2025, 12, 29, 3, 32, 25, 746511), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 32, 25, 746511), 'update_time': datetime.datetime(2025, 12, 28, 3, 32, 25, 747505), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:191] 2025-12-28 11:36:01,073 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:36:03,744 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:36:03,744 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:36:03,744 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:36:03,744 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:36:03,744 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:36:03,749 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:36:03,750 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:36:03,816 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:36:03,865 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:36:03,866 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:36:03,866 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:36:03,952 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:36:04,002 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:36:04,002 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:36:04,002 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:36:04,032 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:36:04,078 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:36:04,078 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:36:04,078 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:40:14,037 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:40:14,451 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:40:14,451 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:40:14,451 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:40:14,451 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:40:14,451 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:40:14,455 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:40:14,455 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:40:14,636 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:40:14,688 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:40:14,688 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:40:14,688 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:40:52,041 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:40:52,548 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:40:52,548 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:40:52,548 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:40:52,548 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:40:52,548 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:40:52,551 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:40:52,576 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:40:52,635 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:40:52,682 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:40:52,682 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:40:52,682 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:40:52,699 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:40:52,751 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:40:52,751 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:40:52,751 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:41:03,520 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:41:03,907 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:41:03,907 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:41:03,907 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:41:03,907 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:41:03,907 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:41:03,911 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:41:03,911 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:41:13,956 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:41:14,320 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:41:14,320 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:41:14,320 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:41:14,320 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:41:14,320 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:41:14,323 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:41:14,324 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:41:23,298 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:41:23,720 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:41:23,721 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:41:23,721 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:41:23,721 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:41:23,721 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:41:23,724 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:41:23,724 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:41:30,008 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:41:30,409 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:41:30,409 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:41:30,409 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:41:30,409 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:41:30,409 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:41:30,422 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:41:30,422 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:41:30,576 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:41:30,626 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:41:30,627 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:41:30,627 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:42:12,022 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:42:12,442 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:42:12,442 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:42:12,442 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:42:12,442 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:42:12,442 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:42:12,445 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:42:12,445 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:42:12,541 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:42:12,589 WARNING: 调度器已初始化,跳过重复初始化 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:29] 2025-12-28 11:42:12,589 WARNING: 调度器已在运行中 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:92] 2025-12-28 11:42:12,589 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:49:29,090 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:49:29,490 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:49:29,490 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:49:29,490 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:49:29,490 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:49:29,490 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:49:29,494 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:49:29,494 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:50:22,331 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:50:22,755 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:50:22,755 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:50:22,755 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:50:22,756 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:50:22,756 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:50:22,758 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:50:22,759 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:51:36,453 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:51:36,870 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:51:36,871 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:51:36,871 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:51:36,871 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:51:36,871 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:51:36,873 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:51:36,873 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:53:23,170 INFO: KaMiXiTong startup [in d:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:53:23,836 INFO: 定时任务调度器初始化完成 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:53:23,837 INFO: 已添加以下定时任务: [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:53:23,837 INFO: 1. 每小时更新过期卡密状态 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:53:23,837 INFO: 2. 每天凌晨2点卡密健康检查 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:53:23,837 INFO: 3. 每周日凌晨3点清理日志 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:53:23,843 INFO: 定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:53:23,843 INFO: 后台定时任务调度器已启动 [in d:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:54:33,956 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:54:34,450 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:54:34,451 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:54:34,451 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:54:34,451 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:54:34,451 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:54:34,454 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:54:34,454 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 11:54:34,977 INFO: 时间戳验证: 请求时间=2025-12-28 03:54:34, 当前时间=2025-12-28 03:54:34.977745, 差值=1.0秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:54:34,977 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894074 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:54:34,978 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:54:34,978 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894074 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:54:34,978 INFO: - 客户端签名: bc36f9f285cbe1ffbfe337aa52e9ad3616cdf21a8d0a9f173a81737930029d77 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:54:34,978 INFO: - 服务端签名: bc36f9f285cbe1ffbfe337aa52e9ad3616cdf21a8d0a9f173a81737930029d77 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:54:34,978 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:54:35,097 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 46418), 'expire_time': datetime.datetime(2025, 12, 29, 3, 54, 35, 46418), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 46418), 'update_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 49298), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 46418), 'expire_time': datetime.datetime(2025, 12, 29, 3, 54, 35, 46418), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 46418), 'update_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 49298), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:54:35,670 INFO: 时间戳验证: 请求时间=2025-12-28 03:54:35, 当前时间=2025-12-28 03:54:35.670928, 差值=0.7秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:54:35,670 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894075 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:54:35,671 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:54:35,671 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894075 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:54:35,671 INFO: - 客户端签名: 2fed711173c9063885ebcb7d8127642e21d5417f996ea5bc550736e7c8fc8d2b [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:54:35,671 INFO: - 服务端签名: 2fed711173c9063885ebcb7d8127642e21d5417f996ea5bc550736e7c8fc8d2b [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:54:35,671 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:54:35,693 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 682927), 'expire_time': datetime.datetime(2025, 12, 29, 3, 54, 35, 682927), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 682927), 'update_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 683927), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 682927), 'expire_time': datetime.datetime(2025, 12, 29, 3, 54, 35, 682927), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 682927), 'update_time': datetime.datetime(2025, 12, 28, 3, 54, 35, 683927), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:54:36,017 INFO: 时间戳验证: 请求时间=2025-12-28 03:54:36, 当前时间=2025-12-28 03:54:36.016093, 差值=0.0秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:54:36,018 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894076 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:54:36,023 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:54:36,024 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894076 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:54:36,025 INFO: - 客户端签名: 07d6fddd4b30757071deaeafdb8a81a31e3e7aa19cdffc61da1b7dc973406a08 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:54:36,026 INFO: - 服务端签名: 07d6fddd4b30757071deaeafdb8a81a31e3e7aa19cdffc61da1b7dc973406a08 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:54:36,027 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:54:36,048 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 36908), 'expire_time': datetime.datetime(2025, 12, 29, 3, 54, 36, 36908), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 36908), 'update_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 38014), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 36908), 'expire_time': datetime.datetime(2025, 12, 29, 3, 54, 36, 36908), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 36908), 'update_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 38014), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:54:36,187 INFO: 时间戳验证: 请求时间=2025-12-28 03:54:36, 当前时间=2025-12-28 03:54:36.187250, 差值=0.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:54:36,188 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894076 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:54:36,188 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:54:36,188 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894076 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:54:36,188 INFO: - 客户端签名: 07d6fddd4b30757071deaeafdb8a81a31e3e7aa19cdffc61da1b7dc973406a08 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:54:36,188 INFO: - 服务端签名: 07d6fddd4b30757071deaeafdb8a81a31e3e7aa19cdffc61da1b7dc973406a08 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:54:36,188 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:54:36,210 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 199250), 'expire_time': datetime.datetime(2025, 12, 29, 3, 54, 36, 199250), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 199250), 'update_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 200261), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 199250), 'expire_time': datetime.datetime(2025, 12, 29, 3, 54, 36, 199250), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 199250), 'update_time': datetime.datetime(2025, 12, 28, 3, 54, 36, 200261), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:56:41,346 INFO: 时间戳验证: 请求时间=2025-12-28 03:56:41, 当前时间=2025-12-28 03:56:41.346879, 差值=0.3秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:56:41,346 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894201 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:56:41,346 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:56:41,348 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894201 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:56:41,348 INFO: - 客户端签名: 093b35433b509bcc231cbf98da44b74554bed88d381a819c14608ea0ea9607a1 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:56:41,348 INFO: - 服务端签名: 093b35433b509bcc231cbf98da44b74554bed88d381a819c14608ea0ea9607a1 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:56:41,348 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:56:41,373 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 56, 41, 362131), 'expire_time': datetime.datetime(2025, 12, 29, 3, 56, 41, 362131), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 56, 41, 362131), 'update_time': datetime.datetime(2025, 12, 28, 3, 56, 41, 363789), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 56, 41, 362131), 'expire_time': datetime.datetime(2025, 12, 29, 3, 56, 41, 362131), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 56, 41, 362131), 'update_time': datetime.datetime(2025, 12, 28, 3, 56, 41, 363789), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:07,201 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:07, 当前时间=2025-12-28 03:57:07.200241, 差值=0.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:07,201 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894227 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:07,201 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:07,201 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894227 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:07,201 INFO: - 客户端签名: 3fc580301e273dfdc2eae925c0b38130f3ed9b9351a08375dbee5061fa3f1d3e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:07,201 INFO: - 服务端签名: 3fc580301e273dfdc2eae925c0b38130f3ed9b9351a08375dbee5061fa3f1d3e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:07,201 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:07,226 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 214293), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 7, 214293), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 214293), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 216308), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 214293), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 7, 214293), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 214293), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 216308), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:07,745 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:07, 当前时间=2025-12-28 03:57:07.745565, 差值=0.7秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:07,746 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894227 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:07,746 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:07,747 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894227 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:07,747 INFO: - 客户端签名: 3fc580301e273dfdc2eae925c0b38130f3ed9b9351a08375dbee5061fa3f1d3e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:07,747 INFO: - 服务端签名: 3fc580301e273dfdc2eae925c0b38130f3ed9b9351a08375dbee5061fa3f1d3e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:07,747 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:07,804 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 766636), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 7, 766636), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 766636), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 768640), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 766636), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 7, 766636), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 766636), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 7, 768640), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:08,185 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:08, 当前时间=2025-12-28 03:57:08.185028, 差值=0.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:08,186 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894228 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:08,186 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:08,186 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894228 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:08,186 INFO: - 客户端签名: f0d06558f5cc492b818c5180b356730cc0b56b89f3db00d1e92782930ad62200 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:08,186 INFO: - 服务端签名: f0d06558f5cc492b818c5180b356730cc0b56b89f3db00d1e92782930ad62200 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:08,186 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:08,207 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 8, 198336), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 8, 198336), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 8, 198336), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 8, 199333), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 8, 198336), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 8, 198336), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 8, 198336), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 8, 199333), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:20,381 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:20, 当前时间=2025-12-28 03:57:20.381465, 差值=0.4秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:20,382 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894240 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:20,382 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:20,382 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894240 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:20,382 INFO: - 客户端签名: cbfe2e58aea1a8b8ecc30ef624fb88aaf09c114eb4053a2ef5e49e04530f7b54 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:20,382 INFO: - 服务端签名: cbfe2e58aea1a8b8ecc30ef624fb88aaf09c114eb4053a2ef5e49e04530f7b54 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:20,382 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:20,431 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 395099), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 20, 395099), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 395099), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 396097), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 395099), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 20, 395099), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 395099), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 396097), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:20,859 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:20, 当前时间=2025-12-28 03:57:20.859783, 差值=0.9秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:20,859 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894240 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:20,864 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:20,864 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894240 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:20,866 INFO: - 客户端签名: cbfe2e58aea1a8b8ecc30ef624fb88aaf09c114eb4053a2ef5e49e04530f7b54 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:20,866 INFO: - 服务端签名: cbfe2e58aea1a8b8ecc30ef624fb88aaf09c114eb4053a2ef5e49e04530f7b54 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:20,866 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:20,888 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 879661), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 20, 879661), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 879661), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 880659), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 879661), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 20, 879661), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 879661), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 20, 880659), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:21,225 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:21, 当前时间=2025-12-28 03:57:21.225414, 差值=0.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:21,226 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894241 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:21,226 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:21,226 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894241 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:21,226 INFO: - 客户端签名: f0cd656a4b0c23c9ce5b50421954492774e58a712d0562aeae8dd45de12b80ed [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:21,226 INFO: - 服务端签名: f0cd656a4b0c23c9ce5b50421954492774e58a712d0562aeae8dd45de12b80ed [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:21,226 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:21,272 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 235514), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 21, 235514), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 235514), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 236512), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 235514), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 21, 235514), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 235514), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 236512), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:21,566 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:21, 当前时间=2025-12-28 03:57:21.566079, 差值=0.6秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:21,566 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894241 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:21,566 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:21,566 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894241 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:21,566 INFO: - 客户端签名: f0cd656a4b0c23c9ce5b50421954492774e58a712d0562aeae8dd45de12b80ed [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:21,566 INFO: - 服务端签名: f0cd656a4b0c23c9ce5b50421954492774e58a712d0562aeae8dd45de12b80ed [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:21,566 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:21,588 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 575315), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 21, 575315), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 575315), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 576979), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 575315), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 21, 575315), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 575315), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 576979), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:21,967 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:21, 当前时间=2025-12-28 03:57:21.967933, 差值=1.0秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:21,970 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894241 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:21,970 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:21,972 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894241 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:21,972 INFO: - 客户端签名: f0cd656a4b0c23c9ce5b50421954492774e58a712d0562aeae8dd45de12b80ed [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:21,972 INFO: - 服务端签名: f0cd656a4b0c23c9ce5b50421954492774e58a712d0562aeae8dd45de12b80ed [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:21,972 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:22,021 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 986497), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 21, 986497), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 986497), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 987452), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 986497), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 21, 986497), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 986497), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 21, 987452), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:22,181 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:22, 当前时间=2025-12-28 03:57:22.180956, 差值=0.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:22,181 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:22,181 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:22,181 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:22,181 INFO: - 客户端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:22,181 INFO: - 服务端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:22,181 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:22,204 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 191717), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 191717), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 191717), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 192718), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 191717), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 191717), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 191717), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 192718), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:22,352 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:22, 当前时间=2025-12-28 03:57:22.352048, 差值=0.4秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:22,352 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:22,352 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:22,352 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:22,352 INFO: - 客户端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:22,352 INFO: - 服务端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:22,352 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:22,371 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 361963), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 361963), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 361963), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 362974), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 361963), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 361963), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 361963), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 362974), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:22,519 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:22, 当前时间=2025-12-28 03:57:22.519601, 差值=0.5秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:22,519 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:22,520 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:22,520 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:22,521 INFO: - 客户端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:22,521 INFO: - 服务端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:22,521 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:22,563 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 530443), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 530443), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 530443), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 531435), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 530443), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 530443), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 530443), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 531435), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:22,697 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:22, 当前时间=2025-12-28 03:57:22.696859, 差值=0.7秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:22,697 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:22,697 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:22,697 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:22,697 INFO: - 客户端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:22,697 INFO: - 服务端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:22,697 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:22,721 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 712970), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 712970), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 712970), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 713968), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 712970), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 712970), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 712970), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 713968), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:22,843 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:22, 当前时间=2025-12-28 03:57:22.843596, 差值=0.8秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:22,844 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:22,844 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:22,844 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894242 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:22,844 INFO: - 客户端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:22,844 INFO: - 服务端签名: 7c7981acfc286bcd0c9fff2497c3abe96438ae6bb75c94885cea4e6c7409ef48 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:22,844 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:22,863 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 853090), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 853090), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 853090), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 854117), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 853090), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 22, 853090), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 853090), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 22, 854117), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:23,009 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:23, 当前时间=2025-12-28 03:57:23.009980, 差值=0.0秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:23,009 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894243 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:23,010 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:23,010 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894243 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:23,010 INFO: - 客户端签名: b46101525bb20435bea813b6f31e5d16649d8962bcd7fba11fd88ee565450bcd [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:23,010 INFO: - 服务端签名: b46101525bb20435bea813b6f31e5d16649d8962bcd7fba11fd88ee565450bcd [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:23,010 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:23,028 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 18974), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 23, 18974), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 18974), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 20977), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 18974), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 23, 18974), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 18974), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 20977), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:23,302 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:23, 当前时间=2025-12-28 03:57:23.302792, 差值=0.3秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:23,303 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894243 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:23,303 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:23,303 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894243 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:23,303 INFO: - 客户端签名: b46101525bb20435bea813b6f31e5d16649d8962bcd7fba11fd88ee565450bcd [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:23,303 INFO: - 服务端签名: b46101525bb20435bea813b6f31e5d16649d8962bcd7fba11fd88ee565450bcd [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:23,303 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:23,348 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 313886), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 23, 313886), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 313886), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 314885), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 313886), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 23, 313886), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 313886), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 23, 314885), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:24,053 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:24, 当前时间=2025-12-28 03:57:24.053974, 差值=0.1秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:24,055 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894244 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:24,055 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:24,055 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894244 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:24,055 INFO: - 客户端签名: 19dcd1dc6bb9b200ff7b9c61fe947ff1142028c77ce27b19b51cdd3e988a3963 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:24,055 INFO: - 服务端签名: 19dcd1dc6bb9b200ff7b9c61fe947ff1142028c77ce27b19b51cdd3e988a3963 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:24,055 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:24,096 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 66752), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 24, 66752), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 66752), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 68301), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 66752), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 24, 66752), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 66752), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 68301), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:24,273 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:24, 当前时间=2025-12-28 03:57:24.273515, 差值=0.3秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:24,273 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894244 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:24,273 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:24,273 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894244 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:24,273 INFO: - 客户端签名: 19dcd1dc6bb9b200ff7b9c61fe947ff1142028c77ce27b19b51cdd3e988a3963 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:24,273 INFO: - 服务端签名: 19dcd1dc6bb9b200ff7b9c61fe947ff1142028c77ce27b19b51cdd3e988a3963 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:24,273 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:24,318 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 287544), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 24, 287544), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 287544), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 289135), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 287544), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 24, 287544), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 287544), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 289135), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:57:24,369 INFO: 时间戳验证: 请求时间=2025-12-28 03:57:24, 当前时间=2025-12-28 03:57:24.369794, 差值=0.4秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:57:24,369 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894244 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:57:24,369 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:57:24,369 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894244 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:57:24,370 INFO: - 客户端签名: 19dcd1dc6bb9b200ff7b9c61fe947ff1142028c77ce27b19b51cdd3e988a3963 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:57:24,370 INFO: - 服务端签名: 19dcd1dc6bb9b200ff7b9c61fe947ff1142028c77ce27b19b51cdd3e988a3963 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:57:24,370 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:57:24,389 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 379187), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 24, 379187), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 379187), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 381191), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 379187), 'expire_time': datetime.datetime(2025, 12, 29, 3, 57, 24, 379187), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 379187), 'update_time': datetime.datetime(2025, 12, 28, 3, 57, 24, 381191), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:27,806 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:27, 当前时间=2025-12-28 03:58:27.806220, 差值=0.8秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:27,806 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894307 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:27,806 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:27,806 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894307 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:27,807 INFO: - 客户端签名: 476ffe25644c49f1cb9d8bbc4ea99e21f379bbb8396eea562ecea8e2fd53df97 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:27,807 INFO: - 服务端签名: 476ffe25644c49f1cb9d8bbc4ea99e21f379bbb8396eea562ecea8e2fd53df97 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:27,807 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:27,858 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 27, 818881), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 27, 818881), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 27, 818881), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 27, 820891), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 27, 818881), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 27, 818881), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 27, 818881), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 27, 820891), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:28,601 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:28, 当前时间=2025-12-28 03:58:28.600638, 差值=0.6秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:28,601 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894308 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:28,601 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:28,601 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894308 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:28,601 INFO: - 客户端签名: 3a0a6af1a812357222ba7b83c409b30b43fa94bb819e2cd9da2367ba892b8ba4 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:28,601 INFO: - 服务端签名: 3a0a6af1a812357222ba7b83c409b30b43fa94bb819e2cd9da2367ba892b8ba4 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:28,601 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:28,647 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 28, 613071), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 28, 613071), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 28, 613071), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 28, 614074), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 28, 613071), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 28, 613071), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 28, 613071), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 28, 614074), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:29,046 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:29, 当前时间=2025-12-28 03:58:29.046742, 差值=0.0秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:29,048 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:29,048 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:29,048 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:29,048 INFO: - 客户端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:29,048 INFO: - 服务端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:29,048 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:29,068 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 58569), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 58569), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 58569), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 60815), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 58569), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 58569), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 58569), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 60815), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:29,312 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:29, 当前时间=2025-12-28 03:58:29.312171, 差值=0.3秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:29,313 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:29,313 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:29,313 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:29,313 INFO: - 客户端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:29,313 INFO: - 服务端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:29,313 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:29,361 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 324182), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 324182), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 324182), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 326182), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 324182), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 324182), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 324182), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 326182), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:29,477 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:29, 当前时间=2025-12-28 03:58:29.477824, 差值=0.5秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:29,477 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:29,477 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:29,478 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:29,478 INFO: - 客户端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:29,478 INFO: - 服务端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:29,478 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:29,528 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 489840), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 489840), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 489840), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 491837), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 489840), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 489840), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 489840), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 491837), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:29,606 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:29, 当前时间=2025-12-28 03:58:29.606441, 差值=0.6秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:29,607 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:29,607 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:29,607 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:29,608 INFO: - 客户端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:29,608 INFO: - 服务端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:29,608 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:29,628 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 618697), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 618697), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 618697), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 619713), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 618697), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 618697), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 618697), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 619713), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:29,765 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:29, 当前时间=2025-12-28 03:58:29.764072, 差值=0.8秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:29,766 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:29,766 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:29,768 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:29,768 INFO: - 客户端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:29,768 INFO: - 服务端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:29,768 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:29,789 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 778449), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 778449), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 778449), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 780431), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 778449), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 778449), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 778449), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 780431), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:29,932 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:29, 当前时间=2025-12-28 03:58:29.932677, 差值=0.9秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:29,932 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:29,932 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:29,932 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894309 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:29,932 INFO: - 客户端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:29,932 INFO: - 服务端签名: 223963ce11581adc19e32ac499cefd0163ade136cb36357e1e3354c80521e3a6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:29,932 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:29,949 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 942119), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 942119), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 942119), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 943122), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 942119), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 29, 942119), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 942119), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 29, 943122), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:30,515 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:30, 当前时间=2025-12-28 03:58:30.515400, 差值=0.5秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:30,516 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894310 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:30,516 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:30,516 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894310 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:30,516 INFO: - 客户端签名: 38818f48a3ed49e6f5095b926907155cbf9b2f00f6dff8ab6ed14b09ec96bfd4 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:30,516 INFO: - 服务端签名: 38818f48a3ed49e6f5095b926907155cbf9b2f00f6dff8ab6ed14b09ec96bfd4 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:30,516 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:30,563 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 528640), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 30, 528640), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 528640), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 530014), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 528640), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 30, 528640), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 528640), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 530014), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:30,880 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:30, 当前时间=2025-12-28 03:58:30.880043, 差值=0.9秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:30,880 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894310 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:30,880 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:30,880 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894310 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:30,880 INFO: - 客户端签名: 38818f48a3ed49e6f5095b926907155cbf9b2f00f6dff8ab6ed14b09ec96bfd4 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:30,881 INFO: - 服务端签名: 38818f48a3ed49e6f5095b926907155cbf9b2f00f6dff8ab6ed14b09ec96bfd4 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:30,882 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:30,930 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 892578), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 30, 892578), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 892578), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 894574), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 892578), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 30, 892578), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 892578), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 30, 894574), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:31,085 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:31, 当前时间=2025-12-28 03:58:31.085809, 差值=0.1秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:31,086 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894311 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:31,086 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:31,086 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894311 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:31,086 INFO: - 客户端签名: b34104e36ae6ec9d1cd369af6381449abcff099eb67d159590f6744e2a069d6e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:31,086 INFO: - 服务端签名: b34104e36ae6ec9d1cd369af6381449abcff099eb67d159590f6744e2a069d6e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:31,086 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:31,106 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 96191), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 31, 96191), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 96191), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 97191), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 96191), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 31, 96191), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 96191), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 97191), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:58:31,372 INFO: 时间戳验证: 请求时间=2025-12-28 03:58:31, 当前时间=2025-12-28 03:58:31.372255, 差值=0.4秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 11:58:31,372 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894311 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 11:58:31,372 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 11:58:31,372 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894311 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 11:58:31,372 INFO: - 客户端签名: b34104e36ae6ec9d1cd369af6381449abcff099eb67d159590f6744e2a069d6e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 11:58:31,372 INFO: - 服务端签名: b34104e36ae6ec9d1cd369af6381449abcff099eb67d159590f6744e2a069d6e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 11:58:31,372 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 11:58:31,418 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 382721), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 31, 382721), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 382721), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 383847), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 382721), 'expire_time': datetime.datetime(2025, 12, 29, 3, 58, 31, 382721), 'last_verify_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 382721), 'update_time': datetime.datetime(2025, 12, 28, 3, 58, 31, 383847), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 11:59:55,237 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 11:59:55,694 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 11:59:55,694 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 11:59:55,695 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 11:59:55,695 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 11:59:55,695 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 11:59:55,699 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 11:59:55,699 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 12:00:40,220 INFO: 时间戳验证: 请求时间=2025-12-28 04:00:40, 当前时间=2025-12-28 04:00:40.219681, 差值=0.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:00:40,220 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894440 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:00:40,220 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:00:40,220 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894440 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:00:40,220 INFO: - 客户端签名: d03bffe52490372f64d7493a3555683f7e4cf951796f5f3a9c48ba9bb936b0f8 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:00:40,220 INFO: - 服务端签名: d03bffe52490372f64d7493a3555683f7e4cf951796f5f3a9c48ba9bb936b0f8 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:00:40,220 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:00:40,381 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 0, 40, 343405), 'expire_time': datetime.datetime(2025, 12, 29, 4, 0, 40, 343405), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 0, 40, 343405), 'update_time': datetime.datetime(2025, 12, 28, 4, 0, 40, 350403), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 0, 40, 343405), 'expire_time': datetime.datetime(2025, 12, 29, 4, 0, 40, 343405), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 0, 40, 343405), 'update_time': datetime.datetime(2025, 12, 28, 4, 0, 40, 350403), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 12:00:41,064 INFO: 时间戳验证: 请求时间=2025-12-28 04:00:41, 当前时间=2025-12-28 04:00:41.064101, 差值=0.1秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:00:41,064 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766894441 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:00:41,064 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:00:41,064 INFO: - 签名数据: PictureEditQI6FOPTD-OB2SPU0M-QX3WB95P-Q2Y4PYWWCDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766894441 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:00:41,064 INFO: - 客户端签名: eadfdcd3068707ab04df1da33613d6c0982e8f11a66cd920a8a8235ff09f866c [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:00:41,065 INFO: - 服务端签名: eadfdcd3068707ab04df1da33613d6c0982e8f11a66cd920a8a8235ff09f866c [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:00:41,065 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:00:41,118 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 0, 41, 81059), 'expire_time': datetime.datetime(2025, 12, 29, 4, 0, 41, 81059), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 0, 41, 81059), 'update_time': datetime.datetime(2025, 12, 28, 4, 0, 41, 83057), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 0, 41, 81059), 'expire_time': datetime.datetime(2025, 12, 29, 4, 0, 41, 81059), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 0, 41, 81059), 'update_time': datetime.datetime(2025, 12, 28, 4, 0, 41, 83057), 'license_license_id': 113}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 12:17:35,904 INFO: 时间戳验证: 请求时间=2025-12-28 04:17:33, 当前时间=2025-12-28 04:17:35.904250, 差值=2.9秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:17:35,904 INFO: 验证请求 - software_id: test, machine_code: test..., timestamp: 1766895453 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:17:35,904 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:17:35,904 INFO: - 签名数据: testtesttest1766895453 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:17:35,905 INFO: - 客户端签名: test [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:17:35,905 INFO: - 服务端签名: e2f276f99841e3c4295521b2c3081071344accbf93dd24247d0346a1f301199d [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:17:35,905 INFO: - 签名匹配: False [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:17:35,905 ERROR: 签名验证失败! [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:112] 2025-12-28 12:17:35,905 ERROR: 期望: e2f276f99841e3c4295521b2c3081071344accbf93dd24247d0346a1f301199d [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:113] 2025-12-28 12:17:35,905 ERROR: 实际: test [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:114] 2025-12-28 12:17:35,905 ERROR: 请检查客户端和服务端是否使用相同的AUTH_SECRET_KEY [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:115] 2025-12-28 12:17:37,936 INFO: 时间戳验证: 请求时间=2025-12-28 04:17:35, 当前时间=2025-12-28 04:17:37.935950, 差值=2.9秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:17:37,936 INFO: 验证请求 - software_id: test_software, machine_code: ABC123DE..., timestamp: 1766895455 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:17:37,936 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:17:37,936 INFO: - 签名数据: test_softwareTEST-TEST-TEST-TESTABC123DEF456GHI789JKL012MNO345PQR1766895455 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:17:37,936 INFO: - 客户端签名: a65040867d6f58b5eb62ffd522453e10003b307fe5fa486f30a1917179d26f7c [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:17:37,937 INFO: - 服务端签名: a65040867d6f58b5eb62ffd522453e10003b307fe5fa486f30a1917179d26f7c [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:17:37,937 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:18:06,879 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 12:18:07,305 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 12:18:07,305 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 12:18:07,305 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 12:18:07,305 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 12:18:07,305 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 12:18:07,308 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 12:18:07,308 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 12:18:23,247 INFO: 时间戳验证: 请求时间=2025-12-28 04:18:21, 当前时间=2025-12-28 04:18:23.247981, 差值=2.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:18:23,247 INFO: 验证请求 - software_id: test, machine_code: test..., timestamp: 1766895501 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:18:23,248 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:18:23,248 INFO: - 签名数据: testtesttest1766895501 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:18:23,248 INFO: - 客户端签名: test [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:18:23,248 INFO: - 服务端签名: 72a2e6480b058e08dbedd4bf722186473b5b005d63ef3ad57b810d54ce305435 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:18:23,248 INFO: - 签名匹配: False [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:18:23,248 ERROR: 签名验证失败! [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:112] 2025-12-28 12:18:23,248 ERROR: 期望: 72a2e6480b058e08dbedd4bf722186473b5b005d63ef3ad57b810d54ce305435 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:113] 2025-12-28 12:18:23,248 ERROR: 实际: test [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:114] 2025-12-28 12:18:23,248 ERROR: 请检查客户端和服务端是否使用相同的AUTH_SECRET_KEY [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:115] 2025-12-28 12:18:25,283 INFO: 时间戳验证: 请求时间=2025-12-28 04:18:23, 当前时间=2025-12-28 04:18:25.283306, 差值=2.3秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:18:25,284 INFO: 验证请求 - software_id: test_software, machine_code: ABC123DE..., timestamp: 1766895503 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:18:25,284 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:18:25,284 INFO: - 签名数据: test_softwareTEST-TEST-TEST-TESTABC123DEF456GHI789JKL012MNO345PQR1766895503 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:18:25,284 INFO: - 客户端签名: a562150cc0caea9edf7badbbf1132a7115da045ad62ae70a738df1f687c2941f [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:18:25,284 INFO: - 服务端签名: a562150cc0caea9edf7badbbf1132a7115da045ad62ae70a738df1f687c2941f [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:18:25,284 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:19:39,131 INFO: 时间戳验证: 请求时间=2025-12-28 04:19:37, 当前时间=2025-12-28 04:19:39.131777, 差值=2.1秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:19:39,132 INFO: 验证请求 - software_id: test, machine_code: test..., timestamp: 1766895577 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:19:39,132 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:19:39,132 INFO: - 签名数据: testtesttest1766895577 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:19:39,132 INFO: - 客户端签名: test [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:19:39,132 INFO: - 服务端签名: 443eb61efa32a46243811172404ce0851066e1e152ae8a3e3e5a0f4412f19c62 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:19:39,132 INFO: - 签名匹配: False [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:19:39,132 ERROR: 签名验证失败! [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:112] 2025-12-28 12:19:39,132 ERROR: 期望: 443eb61efa32a46243811172404ce0851066e1e152ae8a3e3e5a0f4412f19c62 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:113] 2025-12-28 12:19:39,132 ERROR: 实际: test [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:114] 2025-12-28 12:19:39,133 ERROR: 请检查客户端和服务端是否使用相同的AUTH_SECRET_KEY [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:115] 2025-12-28 12:19:41,179 INFO: 时间戳验证: 请求时间=2025-12-28 04:19:39, 当前时间=2025-12-28 04:19:41.179838, 差值=2.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:19:41,180 INFO: 验证请求 - software_id: test_software, machine_code: ABC123DE..., timestamp: 1766895579 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:19:41,180 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:19:41,180 INFO: - 签名数据: test_softwareTEST-TEST-TEST-TESTABC123DEF456GHI789JKL012MNO345PQR1766895579 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:19:41,180 INFO: - 客户端签名: 48c63e1ba7930b3d7db14ba29e27cea132c0b8666262dd5bb33c71a57c18a29b [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:19:41,180 INFO: - 服务端签名: 48c63e1ba7930b3d7db14ba29e27cea132c0b8666262dd5bb33c71a57c18a29b [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:19:41,180 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:25:02,875 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 12:25:03,297 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 12:25:03,298 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 12:25:03,298 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 12:25:03,298 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 12:25:03,298 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 12:25:03,301 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 12:25:03,301 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 12:25:49,874 INFO: 时间戳验证: 请求时间=2025-12-28 04:25:47, 当前时间=2025-12-28 04:25:49.874764, 差值=2.9秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:25:49,875 INFO: 验证请求 - software_id: test, machine_code: test..., timestamp: 1766895947 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:25:49,875 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:25:49,875 INFO: - 签名数据: testtesttest1766895947 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:25:49,875 INFO: - 客户端签名: invalid [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:25:49,875 INFO: - 服务端签名: af8803263cb96229de4c00165974dec736b68681c703183eea7c3609b3311ac8 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:25:49,875 INFO: - 签名匹配: False [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:25:49,875 ERROR: 签名验证失败! [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:112] 2025-12-28 12:25:49,875 ERROR: 期望: af8803263cb96229de4c00165974dec736b68681c703183eea7c3609b3311ac8 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:113] 2025-12-28 12:25:49,875 ERROR: 实际: invalid [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:114] 2025-12-28 12:25:49,875 ERROR: 请检查客户端和服务端是否使用相同的AUTH_SECRET_KEY [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:115] 2025-12-28 12:26:30,168 INFO: 时间戳验证: 请求时间=2025-12-28 04:26:28, 当前时间=2025-12-28 04:26:30.168212, 差值=2.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:26:30,169 INFO: 验证请求 - software_id: test, machine_code: test..., timestamp: 1766895988 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:26:30,169 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:26:30,169 INFO: - 签名数据: testtesttest1766895988 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:26:30,169 INFO: - 客户端签名: test [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:26:30,169 INFO: - 服务端签名: 332b5eb8dce3c18499d6a0d7e2965c60dcca91209334cadce9a31ac20b337bfb [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:26:30,169 INFO: - 签名匹配: False [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:26:30,170 ERROR: 签名验证失败! [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:112] 2025-12-28 12:26:30,170 ERROR: 期望: 332b5eb8dce3c18499d6a0d7e2965c60dcca91209334cadce9a31ac20b337bfb [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:113] 2025-12-28 12:26:30,170 ERROR: 实际: test [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:114] 2025-12-28 12:26:30,170 ERROR: 请检查客户端和服务端是否使用相同的AUTH_SECRET_KEY [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:115] 2025-12-28 12:26:32,213 INFO: 时间戳验证: 请求时间=2025-12-28 04:26:30, 当前时间=2025-12-28 04:26:32.213947, 差值=2.2秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:26:32,214 INFO: 验证请求 - software_id: test_software, machine_code: ABC123DE..., timestamp: 1766895990 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:26:32,214 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:26:32,215 INFO: - 签名数据: test_softwareTEST-TEST-TEST-TESTABC123DEF456GHI789JKL012MNO345PQR1766895990 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:26:32,215 INFO: - 客户端签名: fee97cce5449983cc31e819ce1ae9780e3cadd05f65df374e7266f1eb0e966d0 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:26:32,215 INFO: - 服务端签名: fee97cce5449983cc31e819ce1ae9780e3cadd05f65df374e7266f1eb0e966d0 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:26:32,215 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:32:38,012 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 12:32:38,648 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 12:32:38,648 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 12:32:38,648 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 12:32:38,648 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 12:32:38,648 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 12:32:38,651 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 12:32:38,651 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 12:35:32,354 INFO: 时间戳验证: 请求时间=2025-12-28 04:35:30, 当前时间=2025-12-28 04:35:32.354235, 差值=2.4秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:35:32,355 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766896530 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:35:32,355 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:35:32,355 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766896530 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:35:32,355 INFO: - 客户端签名: 0afcfebee9eed00208cdcd898ae44919a89eb60c0236a26f3ccc38dec5c1db5b [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:35:32,355 INFO: - 服务端签名: 0afcfebee9eed00208cdcd898ae44919a89eb60c0236a26f3ccc38dec5c1db5b [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:35:32,355 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:35:32,412 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 35, 32, 370745), 'expire_time': datetime.datetime(2025, 12, 29, 4, 35, 32, 370745), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 35, 32, 370745), 'update_time': datetime.datetime(2025, 12, 28, 4, 35, 32, 373754), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 35, 32, 370745), 'expire_time': datetime.datetime(2025, 12, 29, 4, 35, 32, 370745), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 35, 32, 370745), 'update_time': datetime.datetime(2025, 12, 28, 4, 35, 32, 373754), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 12:36:49,437 INFO: 时间戳验证: 请求时间=2025-12-28 04:36:47, 当前时间=2025-12-28 04:36:49.437845, 差值=2.4秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:36:49,439 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766896607 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:36:49,439 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:36:49,439 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766896607 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:36:49,439 INFO: - 客户端签名: 6b627db8f2937b3ffe6afe53c9dcde7012f9447fa0799410d6ddf4764c2ee9f6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:36:49,439 INFO: - 服务端签名: 6b627db8f2937b3ffe6afe53c9dcde7012f9447fa0799410d6ddf4764c2ee9f6 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:36:49,439 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:36:49,562 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 36, 49, 532988), 'expire_time': datetime.datetime(2025, 12, 29, 4, 36, 49, 532988), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 36, 49, 532988), 'update_time': datetime.datetime(2025, 12, 28, 4, 36, 49, 538003), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 36, 49, 532988), 'expire_time': datetime.datetime(2025, 12, 29, 4, 36, 49, 532988), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 36, 49, 532988), 'update_time': datetime.datetime(2025, 12, 28, 4, 36, 49, 538003), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 12:41:39,897 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 12:41:40,394 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 12:41:40,394 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 12:41:40,394 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 12:41:40,394 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 12:41:40,394 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 12:41:40,397 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 12:41:40,397 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 12:41:59,348 INFO: 时间戳验证: 请求时间=2025-12-28 04:41:57, 当前时间=2025-12-28 04:41:59.348996, 差值=2.3秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:41:59,349 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766896917 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:41:59,349 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:41:59,349 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766896917 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:41:59,349 INFO: - 客户端签名: 57e05ffd36994202634b05a329aed3b0fc98fa52b40d7340604960732b0d597a [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:41:59,349 INFO: - 服务端签名: 57e05ffd36994202634b05a329aed3b0fc98fa52b40d7340604960732b0d597a [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:41:59,349 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:41:59,478 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 41, 59, 425480), 'expire_time': datetime.datetime(2025, 12, 29, 4, 41, 59, 425480), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 41, 59, 425480), 'update_time': datetime.datetime(2025, 12, 28, 4, 41, 59, 429477), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 41, 59, 425480), 'expire_time': datetime.datetime(2025, 12, 29, 4, 41, 59, 425480), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 41, 59, 425480), 'update_time': datetime.datetime(2025, 12, 28, 4, 41, 59, 429477), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 12:42:02,429 INFO: 时间戳验证: 请求时间=2025-12-28 04:42:00, 当前时间=2025-12-28 04:42:02.429432, 差值=2.4秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 12:42:02,429 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766896920 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 12:42:02,429 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 12:42:02,429 INFO: - 签名数据: PictureEditARF2L67M-VWCQ92QV-YA1I284V-HJSDLI2ECDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766896920 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 12:42:02,429 INFO: - 客户端签名: 2d86eef41bb30fbb053c1782e3b08e4ad193cfe0619a1af8d9cad373d64d321e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 12:42:02,429 INFO: - 服务端签名: 2d86eef41bb30fbb053c1782e3b08e4ad193cfe0619a1af8d9cad373d64d321e [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 12:42:02,429 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 12:42:02,451 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 42, 2, 441456), 'expire_time': datetime.datetime(2025, 12, 29, 4, 42, 2, 441456), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 42, 2, 441456), 'update_time': datetime.datetime(2025, 12, 28, 4, 42, 2, 442452), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in first return self.limit(1)._iter().first() # type: ignore File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\query.py", line 2857, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 2230, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\context.py", line 577, in orm_pre_session_exec session._autoflush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3065, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 3054, in _autoflush self.flush() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4345, in flush self._flush(objects) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4480, in _flush with util.safe_reraise(): File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\util\langhelpers.py", line 224, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\session.py", line 4441, in _flush flush_context.execute() File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDEA\language\Python\lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "D:\IDEA\language\Python\lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() File "D:\IDEA\language\Python\lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDEA\language\Python\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDEA\language\Python\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 4, 42, 2, 441456), 'expire_time': datetime.datetime(2025, 12, 29, 4, 42, 2, 441456), 'last_verify_time': datetime.datetime(2025, 12, 28, 4, 42, 2, 441456), 'update_time': datetime.datetime(2025, 12, 28, 4, 42, 2, 442452), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 13:19:30,816 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 13:19:31,246 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 13:19:31,246 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 13:19:31,246 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 13:19:31,246 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 13:19:31,246 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 13:19:31,248 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 13:19:31,248 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 13:21:14,552 INFO: 时间戳验证: 请求时间=2025-12-28 05:21:14, 当前时间=2025-12-28 05:21:14.552635, 差值=0.6秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 13:21:14,552 INFO: 验证请求 - software_id: ArticleReplace, machine_code: 2CDD8993..., timestamp: 1766899274 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 13:21:14,552 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 13:21:14,552 INFO: - 签名数据: ArticleReplaceTHD0RP4X-RU8BCYNB-SEIVKENY-UYB1943X2CDD89931215BAA8942A75B3B8739FB61766899274 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 13:21:14,552 INFO: - 客户端签名: a8d54993239eb20eaf7465249401e60bc3ff9076d5e75f115ab610278e68cb42 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 13:21:14,552 INFO: - 服务端签名: a8d54993239eb20eaf7465249401e60bc3ff9076d5e75f115ab610278e68cb42 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 13:21:14,552 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 13:47:56,079 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 13:47:56,648 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 13:47:56,648 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 13:47:56,648 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 13:47:56,648 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 13:47:56,648 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 13:47:56,650 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 13:47:56,650 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 13:47:57,449 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 13:47:57,707 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 13:47:57,707 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 13:47:57,707 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 13:47:57,707 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 13:47:57,707 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 13:47:57,708 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 13:47:57,709 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 13:48:15,047 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 13:48:15,047 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 13:48:15,198 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 13:48:17,753 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 13:48:17,761 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 13:48:17,764 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:15:23,437 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:15:24,157 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:15:24,157 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:15:24,157 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:15:24,157 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:15:24,157 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:15:24,159 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:15:24,159 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:23:16,643 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:23:16,927 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:23:16,927 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:23:16,927 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:23:16,927 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:23:16,927 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:23:16,929 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:23:16,929 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:23:17,759 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:23:20,419 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:23:20,420 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:23:20,420 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:23:20,420 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:23:20,421 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:23:20,424 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:23:20,424 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:23:35,229 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:23:35,229 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:23:35,267 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:23:38,214 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:23:38,214 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:23:38,215 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:25:14,848 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:25:15,076 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:25:15,076 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:25:15,076 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:25:15,076 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:25:15,076 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:25:15,077 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:25:15,077 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:25:15,921 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:25:16,151 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:25:16,151 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:25:16,151 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:25:16,151 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:25:16,151 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:25:16,152 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:25:16,152 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:25:19,650 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:25:19,650 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:25:19,684 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:25:22,521 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:25:22,521 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:25:22,523 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:25:25,208 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:25:25,208 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:25:25,210 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (sqlite3.OperationalError) unable to open database file (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:26:52,768 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:26:53,040 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:26:53,040 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:26:53,040 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:26:53,040 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:26:53,040 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:26:53,041 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:26:53,041 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:26:54,327 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:26:54,593 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:26:54,593 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:26:54,593 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:26:54,593 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:26:54,594 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:26:54,595 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:26:54,595 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:26:59,687 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:26:59,687 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:26:59,736 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:27:02,878 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:27:02,878 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:27:02,882 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:27:05,746 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:27:05,747 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:27:05,753 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:29:24,423 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:29:24,686 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:29:24,686 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:29:24,686 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:29:24,686 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:29:24,686 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:29:24,688 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:29:24,688 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:29:25,367 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:29:25,844 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:29:25,844 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:29:25,844 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:29:25,844 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:29:25,844 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:29:25,846 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:29:25,846 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:29:41,673 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:29:41,673 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:29:41,715 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:30:01,022 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:30:01,377 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:30:01,377 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:30:01,377 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:30:01,377 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:30:01,377 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:30:01,379 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:30:01,379 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:30:13,179 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:30:13,525 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:30:13,525 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:30:13,525 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:30:13,525 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:30:13,525 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:30:13,526 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:30:13,526 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:30:14,328 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:30:14,612 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:30:14,612 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:30:14,612 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:30:14,612 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:30:14,612 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:30:14,613 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:30:14,613 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:30:20,952 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:30:20,952 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:30:20,990 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:31:25,950 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:31:25,950 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:31:25,974 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:31:28,229 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:31:28,230 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:31:28,232 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:34:45,757 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:34:46,305 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:34:46,306 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:34:46,306 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:34:46,306 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:34:46,306 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:34:46,308 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:34:46,309 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:37:13,659 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:37:14,495 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:37:14,495 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:37:14,496 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:37:14,496 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:37:14,496 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:37:14,499 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:37:14,499 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:37:46,860 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:37:47,820 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:37:47,820 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:37:47,820 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:37:47,820 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:37:47,822 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:37:47,828 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:37:47,828 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:38:08,856 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:38:09,720 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:38:09,721 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:38:09,721 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:38:09,721 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:38:09,721 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:38:09,723 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:38:09,723 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:41:27,129 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:41:27,755 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:41:27,755 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:41:27,755 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:41:27,755 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:41:27,755 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:41:27,759 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:41:27,759 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:43:18,543 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:43:19,787 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:43:19,787 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:43:19,787 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:43:19,787 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:43:19,787 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:43:19,791 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:43:19,791 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:43:53,388 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:43:53,702 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:43:53,702 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:43:53,702 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:43:53,702 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:43:53,702 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:43:53,703 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:43:53,703 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:44:54,336 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:44:54,878 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:44:54,880 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:44:54,880 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:44:54,880 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:44:54,880 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:44:54,881 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:44:54,881 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:47:32,894 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:47:33,198 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:47:33,198 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:47:33,198 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:47:33,198 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:47:33,198 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:47:33,200 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:47:33,200 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:48:27,970 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:48:28,841 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:48:28,841 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:48:28,841 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:48:28,842 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:48:28,842 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:48:28,843 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:48:28,845 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:49:55,427 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:49:56,388 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:49:56,392 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:49:56,392 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:49:56,392 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:49:56,392 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:49:56,396 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:49:56,396 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:50:19,754 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:50:19,987 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:50:19,987 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:50:19,987 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:50:19,987 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:50:19,987 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:50:19,990 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:50:19,990 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:50:22,056 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:50:22,651 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:50:22,651 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:50:22,651 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:50:22,651 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:50:22,651 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:50:22,654 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:50:22,654 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:54:02,577 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:54:03,190 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:54:03,190 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:54:03,190 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:54:03,190 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:54:03,190 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:54:03,193 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:54:03,193 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:54:34,543 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:54:34,858 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:54:34,858 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:54:34,858 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:54:34,858 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:54:34,858 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:54:34,860 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:54:34,860 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:54:35,786 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 14:54:36,104 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 14:54:36,104 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 14:54:36,104 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 14:54:36,104 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 14:54:36,105 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 14:54:36,106 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 14:54:36,106 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 14:54:41,529 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:54:41,529 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:54:41,577 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:54:56,966 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:54:56,966 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:54:56,973 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 14:54:57,384 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 14:54:57,384 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 14:54:57,386 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 15:02:12,626 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:02:13,063 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:02:13,063 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:02:13,063 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:02:13,063 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:02:13,063 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:02:13,065 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:02:13,065 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:03:28,053 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:03:28,359 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:03:28,359 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:03:28,359 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:03:28,359 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:03:28,359 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:03:28,360 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:03:28,360 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:03:30,113 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:03:30,522 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:03:30,522 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:03:30,522 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:03:30,522 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:03:30,522 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:03:30,525 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:03:30,525 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:03:36,081 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 15:03:36,082 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 15:03:36,123 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 15:03:38,780 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 15:03:38,780 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 15:03:38,786 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 15:03:41,404 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 15:03:41,404 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 15:03:41,406 ERROR: 登录过程中发生错误 - 用户名: admin, 错误: (pymysql.err.OperationalError) (1049, "Unknown database 'kamaxitong'") (Background on this error at: https://sqlalche.me/e/20/e3q8) [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:121] 2025-12-28 15:04:17,211 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:04:17,422 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:04:17,422 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:04:17,422 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:04:17,422 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:04:17,422 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:04:17,423 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:04:17,423 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:06:18,098 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:06:18,328 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:06:18,328 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:06:18,328 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:06:18,328 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:06:18,328 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:06:18,329 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:06:18,329 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:11:30,359 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:11:33,651 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:11:33,651 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:11:33,651 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:11:33,651 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:11:33,651 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:11:33,654 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:11:33,654 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:11:38,741 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:11:39,560 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:11:39,562 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:11:39,562 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:11:39,562 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:11:39,562 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:11:39,564 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:11:39,565 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:12:28,643 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:12:28,880 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:12:28,880 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:12:28,880 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:12:28,880 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:12:28,880 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:12:28,881 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:12:28,881 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:12:34,031 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 15:12:34,032 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 15:12:34,638 INFO: 登录成功 - 用户名: admin, IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:79] 2025-12-28 15:12:34,820 INFO: License search params - page: 1, per_page: 5, product_id: None, status: 1, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 15:12:34,841 INFO: License search results - total: 0, pages: 0 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 15:12:38,280 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 15:12:38,320 INFO: License search results - total: 110, pages: 11 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 15:12:57,305 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 15:12:57,310 INFO: License search results - total: 110, pages: 11 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 15:13:05,714 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 15:13:05,718 INFO: License search results - total: 120, pages: 12 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 15:13:55,740 INFO: 时间戳验证: 请求时间=2025-12-28 07:13:55, 当前时间=2025-12-28 07:13:55.740642, 差值=0.7秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 15:13:55,740 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766906035 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 15:13:55,740 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 15:13:55,741 INFO: - 签名数据: PictureEditB39KWASU-YP401O9Y-NJZVS1FA-KU5ET9RACDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766906035 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 15:13:55,741 INFO: - 客户端签名: bdb97282c22c3a50e4451f9f0170e16d8371fef0ee1e8dca2046324212d998ac [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 15:13:55,741 INFO: - 服务端签名: bdb97282c22c3a50e4451f9f0170e16d8371fef0ee1e8dca2046324212d998ac [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 15:13:55,741 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 15:13:56,070 ERROR: 卡密验证失败: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 7, 13, 55, 786442), 'expire_time': datetime.datetime(2025, 12, 29, 7, 13, 55, 786442), 'last_verify_time': datetime.datetime(2025, 12, 28, 7, 13, 55, 786442), 'update_time': datetime.datetime(2025, 12, 28, 7, 13, 55, 786442), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) Traceback (most recent call last): File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute cursor.execute(statement, parameters) File "D:\IDE\Anaconda\Lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDE\Anaconda\Lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDE\Anaconda\Lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDE\Anaconda\Lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDE\Anaconda\Lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\api\auth.py", line 159, in verify_license success, message = license_obj.activate( ^^^^^^^^^^^^^^^^^^^^^ File "D:\work\code\python\KaMiXiTong\master\app\models\license.py", line 131, in activate device = Device.query.filter_by(machine_code=machine_code, product_id=self.product_id).first() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\query.py", line 2728, in first return self.limit(1)._iter().first() # type: ignore ^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\query.py", line 2827, in _iter result: Union[ScalarResult[_T], Result[_T]] = self.session.execute( ^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\session.py", line 2362, in execute return self._execute_internal( ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\session.py", line 2226, in _execute_internal ) = compile_state_cls.orm_pre_session_exec( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\context.py", line 549, in orm_pre_session_exec session._autoflush() File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\session.py", line 3061, in _autoflush raise e.with_traceback(sys.exc_info()[2]) File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\session.py", line 3050, in _autoflush self.flush() File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\session.py", line 4352, in flush self._flush(objects) File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\session.py", line 4487, in _flush with util.safe_reraise(): File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\util\langhelpers.py", line 146, in __exit__ raise exc_value.with_traceback(exc_tb) File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\session.py", line 4448, in _flush flush_context.execute() File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\persistence.py", line 85, in save_obj _emit_update_statements( File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\persistence.py", line 912, in _emit_update_statements c = connection.execute( ^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute return meth( ^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\sql\elements.py", line 515, in _execute_on_connection return connection._execute_clauseelement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\base.py", line 1640, in _execute_clauseelement ret = self._execute_context( ^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute cursor.execute(statement, parameters) File "D:\IDE\Anaconda\Lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) ^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) File "D:\IDE\Anaconda\Lib\site-packages\pymysql\connections.py", line 558, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\pymysql\connections.py", line 822, in _read_query_result result.read() File "D:\IDE\Anaconda\Lib\site-packages\pymysql\connections.py", line 1200, in read first_packet = self.connection._read_packet() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\pymysql\connections.py", line 772, in _read_packet packet.raise_for_error() File "D:\IDE\Anaconda\Lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "D:\IDE\Anaconda\Lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kamixitong`.`audit_log`, CONSTRAINT `fk_audit_log_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`admin_id`) ON DELETE CASCADE ON UPDATE RESTRICT)') [SQL: UPDATE license SET status=%(status)s, bind_machine_code=%(bind_machine_code)s, activate_time=%(activate_time)s, expire_time=%(expire_time)s, last_verify_time=%(last_verify_time)s, update_time=%(update_time)s WHERE license.license_id = %(license_license_id)s] [parameters: {'status': 1, 'bind_machine_code': 'CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF', 'activate_time': datetime.datetime(2025, 12, 28, 7, 13, 55, 786442), 'expire_time': datetime.datetime(2025, 12, 29, 7, 13, 55, 786442), 'last_verify_time': datetime.datetime(2025, 12, 28, 7, 13, 55, 786442), 'update_time': datetime.datetime(2025, 12, 28, 7, 13, 55, 786442), 'license_license_id': 112}] (Background on this error at: https://sqlalche.me/e/20/gkpj) [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:214] 2025-12-28 15:15:59,398 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:15:59,633 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:15:59,633 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:15:59,633 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:15:59,633 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:15:59,633 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:15:59,634 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:15:59,635 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:25:04,199 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:25:04,417 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:25:04,417 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:25:04,417 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:25:04,417 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:25:04,418 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:25:04,418 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:25:04,418 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:41:49,973 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:41:50,376 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:41:50,376 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:41:50,376 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:41:50,376 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:41:50,376 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:41:50,378 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:41:50,378 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:43:06,829 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:43:07,059 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:43:07,059 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:43:07,059 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:43:07,059 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:43:07,059 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:43:07,060 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:43:07,060 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:43:45,858 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:43:46,091 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:43:46,091 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:43:46,091 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:43:46,091 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:43:46,091 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:43:46,092 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:43:46,092 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:45:25,965 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:45:26,200 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:45:26,201 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:45:26,201 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:45:26,201 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:45:26,201 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:45:26,202 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:45:26,203 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:46:14,883 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:46:15,137 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:46:15,137 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:46:15,137 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:46:15,137 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:46:15,137 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:46:15,138 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:46:15,138 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:46:28,757 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:46:29,030 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:46:29,030 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:46:29,030 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:46:29,030 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:46:29,030 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:46:29,032 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:46:29,032 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:51:43,870 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:51:44,108 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:51:44,108 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:51:44,108 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:51:44,108 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:51:44,108 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:51:44,109 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:51:44,109 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:52:00,072 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 15:52:00,089 INFO: License search results - total: 121, pages: 13 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 15:55:22,389 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:55:22,632 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:55:22,632 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:55:22,632 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:55:22,633 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:55:22,633 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:55:22,633 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:55:22,633 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:57:44,310 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:57:44,605 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:57:44,605 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:57:44,605 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:57:44,605 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:57:44,605 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:57:44,606 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:57:44,606 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 15:58:30,472 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 15:58:31,276 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 15:58:31,276 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 15:58:31,276 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 15:58:31,276 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 15:58:31,276 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 15:58:31,278 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 15:58:31,278 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 16:06:00,067 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:171] 2025-12-28 16:06:00,328 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 16:06:00,328 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 16:06:00,328 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 16:06:00,328 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 16:06:00,328 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 16:06:00,331 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 16:06:00,331 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 16:15:59,651 INFO: 开始检查过期卡密... [in D:\work\code\python\KaMiXiTong\master\app\utils\background_tasks.py:22] 2025-12-28 16:15:59,652 ERROR: 执行过期卡密检查时发生错误: Working outside of application context. This typically means that you attempted to use functionality that needed the current application. To solve this, set up an application context with app.app_context(). See the documentation for more information. [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:131] Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py", line 122, in check_and_update_expired_licenses result = update_expired_licenses() ^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\work\code\python\KaMiXiTong\master\app\utils\background_tasks.py", line 63, in update_expired_licenses db.session.rollback() File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\scoping.py", line 1796, in rollback return self._proxied.rollback() ^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\scoping.py", line 197, in _proxied return self.registry() ^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\util\_collections.py", line 632, in __call__ key = self.scopefunc() ^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\flask_sqlalchemy\session.py", line 111, in _app_ctx_id return id(app_ctx._get_current_object()) # type: ignore[attr-defined] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\werkzeug\local.py", line 519, in _get_current_object raise RuntimeError(unbound_message) from None RuntimeError: Working outside of application context. This typically means that you attempted to use functionality that needed the current application. To solve this, set up an application context with app.app_context(). See the documentation for more information. 2025-12-28 16:18:13,630 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:176] 2025-12-28 16:18:13,891 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 16:18:13,891 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 16:18:13,891 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 16:18:13,891 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 16:18:13,891 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 16:18:13,892 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 16:18:13,892 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 16:18:23,656 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 16:18:23,656 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 16:18:23,676 WARNING: 登录失败 - 密码错误: admin [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:109] 2025-12-28 16:29:01,674 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:176] 2025-12-28 16:29:01,925 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 16:29:01,926 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 16:29:01,926 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 16:29:01,926 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 16:29:01,926 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 16:29:01,928 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 16:29:01,928 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 16:29:05,825 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 16:29:05,825 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 16:29:06,597 INFO: 登录成功 - 用户名: admin, IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:79] 2025-12-28 16:29:06,815 INFO: License search params - page: 1, per_page: 5, product_id: None, status: 1, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 16:29:06,839 INFO: License search results - total: 0, pages: 0 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 16:29:10,037 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 16:29:10,044 INFO: License search results - total: 0, pages: 0 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 16:29:24,143 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 16:29:24,147 INFO: License search results - total: 0, pages: 0 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 16:29:32,472 INFO: License search params - page: 1, per_page: 10, product_id: None, status: None, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 16:29:32,477 INFO: License search results - total: 10, pages: 1 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76] 2025-12-28 16:29:43,950 INFO: 时间戳验证: 请求时间=2025-12-28 08:29:43, 当前时间=2025-12-28 08:29:43.950876, 差值=1.0秒 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:74] 2025-12-28 16:29:43,950 INFO: 验证请求 - software_id: PictureEdit, machine_code: CDC3AEA9..., timestamp: 1766910583 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:102] 2025-12-28 16:29:43,951 INFO: 签名验证详情: [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:105] 2025-12-28 16:29:43,951 INFO: - 签名数据: PictureEditSEQLHFK6-FLUA0XYF-4PS1SXII-8EJ69QJ5CDC3AEA9AD3CA8BE4B4A46F3DEC1E8DF1766910583 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:106] 2025-12-28 16:29:43,951 INFO: - 客户端签名: df5149d9dd20b506d461b5bf9e645da3cbe29a31237cc92f18e2354f75f7a780 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:107] 2025-12-28 16:29:43,951 INFO: - 服务端签名: df5149d9dd20b506d461b5bf9e645da3cbe29a31237cc92f18e2354f75f7a780 [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:108] 2025-12-28 16:29:43,951 INFO: - 签名匹配: True [in D:\work\code\python\KaMiXiTong\master\app\api\auth.py:109] 2025-12-28 17:29:01,945 INFO: 开始检查过期卡密... [in D:\work\code\python\KaMiXiTong\master\app\utils\background_tasks.py:22] 2025-12-28 17:29:01,951 ERROR: 执行过期卡密检查时发生错误: Working outside of application context. This typically means that you attempted to use functionality that needed the current application. To solve this, set up an application context with app.app_context(). See the documentation for more information. [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:131] Traceback (most recent call last): File "D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py", line 122, in check_and_update_expired_licenses result = update_expired_licenses() ^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\work\code\python\KaMiXiTong\master\app\utils\background_tasks.py", line 63, in update_expired_licenses db.session.rollback() File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\scoping.py", line 1796, in rollback return self._proxied.rollback() ^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\orm\scoping.py", line 197, in _proxied return self.registry() ^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\sqlalchemy\util\_collections.py", line 632, in __call__ key = self.scopefunc() ^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\flask_sqlalchemy\session.py", line 111, in _app_ctx_id return id(app_ctx._get_current_object()) # type: ignore[attr-defined] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IDE\Anaconda\Lib\site-packages\werkzeug\local.py", line 519, in _get_current_object raise RuntimeError(unbound_message) from None RuntimeError: Working outside of application context. This typically means that you attempted to use functionality that needed the current application. To solve this, set up an application context with app.app_context(). See the documentation for more information. 2025-12-28 17:52:56,323 INFO: KaMiXiTong startup [in D:\work\code\python\KaMiXiTong\master\config.py:176] 2025-12-28 17:52:56,730 INFO: 定时任务调度器初始化完成 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:75] 2025-12-28 17:52:56,730 INFO: 已添加以下定时任务: [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:76] 2025-12-28 17:52:56,730 INFO: 1. 每小时更新过期卡密状态 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:77] 2025-12-28 17:52:56,730 INFO: 2. 每天凌晨2点卡密健康检查 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:78] 2025-12-28 17:52:56,730 INFO: 3. 每周日凌晨3点清理日志 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:79] 2025-12-28 17:52:56,732 INFO: 定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\utils\scheduler.py:96] 2025-12-28 17:52:56,732 INFO: 后台定时任务调度器已启动 [in D:\work\code\python\KaMiXiTong\master\app\__init__.py:164] 2025-12-28 17:56:40,486 INFO: 收到登录请求 - IP: 127.0.0.1, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:20] 2025-12-28 17:56:40,490 INFO: 登录尝试 - 用户名: admin, 来源IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:49] 2025-12-28 17:56:41,063 INFO: 登录成功 - 用户名: admin, IP: 127.0.0.1 [in D:\work\code\python\KaMiXiTong\master\app\web\__init__.py:79] 2025-12-28 17:56:41,203 INFO: License search params - page: 1, per_page: 5, product_id: None, status: 1, type: None, keyword: [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:30] 2025-12-28 17:56:41,238 INFO: License search results - total: 1, pages: 1 [in D:\work\code\python\KaMiXiTong\master\app\api\license.py:76]