【问题标题】:Why am I getting "ERROR 1049 (42000): Unknown database"?为什么我会收到“错误 1049 (42000):未知数据库”?
【发布时间】:2020-07-16 21:30:22
【问题描述】:

这篇文章就在前一秒被关闭了,因为它显然不够集中。我不确定我怎么能更具体?我已经阐明了上下文、出错的代码和错误语句。我还应该添加什么?如果我做错了什么,请发表评论,以便我从错误中吸取教训。


我运行这段代码:

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -uroot -proot belgarath_test < bets_baseline.sql

从此目录:

C:\Users\Philip\OneDrive\Betting\Capra\Tennis\polgara\tests\mysql>

但是,尝试运行这行代码:

subprocess.run([r'C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe', '-uroot', '-proot', 'belgarath_test < bets_baseline.sql'], cwd=r'C:\Users\Philip\OneDrive\Betting\Capra\Tennis\polgara\tests\mysql')

给出这个错误:

ERROR 1049 (42000): Unknown database 'belgarath_test < bets_baseline.sql'

【问题讨论】:

  • bash 中的&lt; bets_baseline.sql 不是表示“将此文件通过管道传输到程序”吗?这意味着它不会是您打开文件并将其传递给stdin 所需的命令行参数的一部分
  • 有谁知道这篇文章最初有什么问题吗?
  • 您最初的问题是... -proot belgarath_test 是命令行参数的结尾,` bets_baseline.sql 应该通过管道传输进入程序标准输入。
  • 感谢 Tadhg。实际上,我的意思是该帖子有什么问题,因为它因不够集中而被关闭。我认为这是一个非常体面的问题......
  • 我不认为这是关闭的?有人可能已经投票了,但这是一个非常好的问题,所以现在已经过去了。

标签: python cmd subprocess


【解决方案1】:

使用subprocess.runstdin参数,例如:

f = open(r"C:\Users\Philip\OneDrive\Betting\Capra\Tennis\polgara\tests\mysql\bets_baseline.sql", "r")
subprocess.run([r'C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe',
                '-uroot', '-proot', 'belgarath_test'],
cwd=r'C:\Users\Philip\OneDrive\Betting\Capra\Tennis\polgara\tests\mysql',
stdin = f)

【讨论】:

  • 感谢@TadhgMcDonald-Jensen 的更正/编辑
  • 工作就像一个魅力,谢谢!虽然确实产生了这个警告:ResourceWarning: unclosed file &lt;_io.TextIOWrapper name='C:\\Users\\Philip\\OneDrive\\Betting\\Capra\\Tennis\\polgara\\tests\\mysql\\bets_baseline.sql' mode='r' encoding='cp1252'&gt; self.import_object() ResourceWarning: Enable tracemalloc to get the object allocation traceback
  • @Jossy 该警告是因为文件描述符未关闭。您可以添加f.close()stmt 来关闭它。
猜你喜欢
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多