解决命令行mysql -e 执行长sql没结果


mysql -h${HOST_NAME} -P${PORT} -u${USER_NAME} ${DB_NAME} -e”${sql}” 方式来执行sql,发现执行没报错,但没有结果。而这个sql在navicat单独执行是没报错的,并且没有双引号等冲突。

在命令行中执行 SQL 时,如果 SQL 语句格式不正确,尤其是涉及到多行 SQL 语句或特殊字符时,命令行可能无法正确解析。可能的原因和解决办法:

  • 分隔符问题:如果 ${bigdata_charge_electric_hour} 包含多行或复杂的 SQL 语句,确保它是一个有效的单行语句。如果包含换行符或者特殊字符,命令行工具可能会解释错误。
  • 引号问题:如果 ${bigdata_charge_electric_hour} 中的 SQL 语句本身包含了引号(例如 '"),需要确保它们被正确转义,否则命令行会解析错误。可以使用双引号 " 来包装 SQL 查询,或者使用反斜杠转义其中的引号。

解决方法:如果 SQL 语句包含多行或者特殊字符,可以考虑将其写入一个 .sql 文件,并使用 mysql 命令执行文件:

mysql -h${HOST_NAME} -P${PORT} -u${USER_NAME} ${DB_NAME} < your_sql_file.sql 

这样可以避免命令行解析时的格式问题。

修改成上面的方式果然执行成功并且有结果了。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注