Linux下MySQL区分大小写,为何仍出现重复条目错误?
MLflow记录参数时出现BAD_REQUEST重复条目错误
错误回溯信息
mlflow.exceptions.RestException: BAD_REQUEST: (pymysql.err.IntegrityError) (1062, "Duplicate entry 'hidden_Size-417080a853934d5d8a7cf5a27' for key 'params.PRIMARY'") [SQL: INSERT INTO params (`key`, value, run_uuid) VALUES (%(key)s, %(value)s, %(run_uuid)s)] [parameters: ({'key': 'dropout_rate', 'value': '0.1', 'run_uuid': '417080a853934d5d8a7cf5a27'}, {'key': 'model_type', 'value': '', 'run_uuid': '417080a853934d5d8a7cf5a27'}, {'key': 'model_name_or_path', 'value': '', 'run_uuid': '417080a853934d5d8a7cf5a27'}, {'key': 'model_checkpoint_path', 'value': '', 'run_uuid': '417080a853934d5d8a7cf5a27'}, {'key': 'hidden_size', 'value': '768', 'run_uuid': '417080a853934d5d8a7cf5a27'}, {'key': 'vocab_size', 'value': '49408', 'run_uuid': '417080a853934d5d8a7cf5a27'}, {'key': 'num_layers', 'value': '12', 'run_uuid': '417080a853934d5d8a7cf5a27'}, {'key': 'attn_heads', 'value': '8', 'run_uuid': '417080a853934d5d8a7cf5a27'} ... displaying 10 of 40 total bo und parameter sets ... {'key': 'num_labels', 'value': '13', 'run_uuid': '417080a853934d5d8a7cf5a27'}, {'key': 'hidden_Size', 'value': '256', 'run_uuid': '417080a853934d5d8a7cf5a27'})] (Background on this error at: https://sqlalche.me/e/14/gkpj)
问题描述
用参数解析器管理实验参数,通过mlflow.log_params(vars(args))记录参数时,代码意外生成了hidden_size和hidden_Size两个仅大小写不同的参数。按道理Linux下MySQL应该区分大小写,但却触发了重复条目错误,疑惑这两个参数为何被视为同一条目。
原因与解决方案
核心原因
MySQL的大小写敏感性分两个层面:
- 表名、库名的大小写由
lower_case_table_names参数控制,Linux默认值为0(区分大小写); - 字段值的大小写敏感性由字段的排序规则(Collation)决定。MLflow默认创建的
params表中,key字段用的是不区分大小写的排序规则(比如utf8_general_ci),此时数据库会把hidden_size和hidden_Size判定为相同的键,而params表的主键是(key, run_uuid),同一run下出现相同键就会触发重复条目错误。
解决方案
- 优先修复代码:找到生成
hidden_Size参数的代码逻辑,删除或修改这个重复参数,确保所有参数名大小写一致(建议统一用小写),从根源避免问题。 - 修改数据库字段排序规则:如果确实需要保留参数名的大小写区分,可修改
params表key字段的排序规则为区分大小写的类型(比如utf8_bin),执行以下SQL语句(操作前务必备份数据):ALTER TABLE params MODIFY COLUMN `key` VARCHAR(250) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL; - 规范参数命名:后续实验中统一参数命名规则,比如全部使用小写字母、下划线分隔,避免因大小写不一致引发类似问题。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

