MySQL Error number: 4147; Symbol: ER_BULK_PARSER_UNEXPECTED_ROW_TERMINATOR; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: 4147; Symbol: ER_BULK_PARSER_UNEXPECTED_ROW_TERMINATOR; SQLSTATE: HY000
Message: Unexpected row terminator found at row %ld in file ‘%s’. Data for some columns is missing.
ER_BULK_PARSER_UNEXPECTED_ROW_TERMINATOR:MySQL错误码4147
与其他操作相比,MySQL的BULK操作(例如LOAD DATA)在处理文件时比较特殊,当处理的文件格式有误时会报出ER_BULK_PARSER_UNEXPECTED_ROW_TERMINATOR错误码(error code 4147)。
错误说明
该错误可能是由于MySQL遇到未指定文件行结束符或者MySQL期望文件列数比实际文件列数多导致的,因此MySQL在处理文件及时遇到了未能预料到的格式,警告弹出ER_BULK_PARSER_UNEXPECTED_ROW_TERMINATOR error。
常见案例
1. 如果终止符未正确定义,MySQL可能就不能匹配到文件的每一行,当解析时会遇到ER_BULK_PARSER_UNEXPECTED_ROW_TERMINATOR error。
2. 如果文件中的某一行的列的数量(例如由逗号分隔)更多(或者比MySQL期望的更少),MySQL也会报出ER_BULK_PARSER_UNEXPECTED_ROW_TERMINATOR error code 4147
解决方法
1. 检查文件末尾是否定义了终止符,比如MySQL在处理.csv文件是,都未定义每行的终止符(如果使用默认行终止符),你可以在LOAD DATA操作时定义终止符号,使用LINES TERMINATED BY来instruct MySQL 使用自己定义的终止符。
2. 检查文件中每行的列数量,检查是否与 MySQls期望的列数量相同,由于处理文件是一项苦劳的操作,你可以使用脚本来检查是否存在不一致情况,这样就大大提高了效率。你也可以在LOAD DATA语句中使用IGNORE指定MySQL忽略某些数据行。