Bash脚本更新MySQL遇1044错误:文件名后缀误作数据库名
问题原因与解决方法
报错显示脚本错误将mp4当作数据库名,核心是脚本里的MySQL命令参数逻辑错误,把文件名的后缀(或文件名本身)误传成了数据库名参数,而非你配置的sql_vestelrecog_。常见场景及修复方式如下:
常见错误场景及修复
MySQL命令参数顺序错误
若脚本用类似mysql mp4 your_file.json的命令,MySQL会把第一个非选项参数mp4识别为数据库名。正确写法应明确指定目标数据库:# 直接导入JSON文件到指定数据库 mysql -u sql_vestelrecog_ -p sql_vestelrecog_ < your_json_file.json或者用
-e参数执行导入逻辑时,确保在目标数据库上下文里操作:mysql -u sql_vestelrecog_ -p sql_vestelrecog_ -e "LOAD DATA INFILE '/path/to/your/file.json' INTO TABLE target_table;"变量赋值错误,误将文件名后缀作为数据库名
若脚本里有提取文件名后缀的逻辑(比如DB_NAME=${file##*.}),会把mp4赋值给数据库名变量。直接将数据库名写死为正确值即可:DB_NAME="sql_vestelrecog_"mysqlimport命令顺序颠倒
用mysqlimport导入时,语法是mysqlimport [选项] 数据库名 文件名,如果把文件名放在数据库名位置,会导致MySQL把文件名(或后缀)当成数据库名。正确写法:mysqlimport -u sql_vestelrecog_ -p sql_vestelrecog_ /path/to/your/file.json文件名含特殊字符未加引号
如果文件名有空格或特殊字符,shell会将其拆分为多个参数,可能把mp4单独解析为数据库名参数。给文件名加双引号即可:mysql -u sql_vestelrecog_ -p sql_vestelrecog_ < "video_data.mp4.json"
内容的提问来源于stack exchange,提问作者Yagmur CA
相关产品推荐
相关产品推荐

