【问题标题】:MySQL Import shows successful but no tables generatedMySQL Import 显示成功但没有生成表
【发布时间】:2014-07-15 10:59:16
【问题描述】:

尝试通过 cmd 导入一个小的 .sql 文件 (~5MB)。在几秒钟内,导入就像成功一样返回(没有错误或警告),但是,当我在工作台中刷新架构或检查架构的文件夹表示的内容时,架构似乎为空。

这是我使用的命令:

mysql -hlocalhost -uroot -ppassword db_name < C:\sql_input_path\db.sql > C:\error_log_output_path\error.txt

另外,我尝试使用Workbench导入工具导入.sql文件,同样显示成功,但刷新后实际schema似乎没有任何反映。

任何想法为什么会这样以及如何纠正这个问题?很长一段时间以来,我一直试图弄清楚这一点。

提前致谢!

【问题讨论】:

  • 另外,show processlist 命令似乎并没有表明 MySQL 在导入期间正在导入任何内容,show tables 在导入后没有返回任何结果。
  • 检查db.sql 文件,如果use db_name 包含在与您预期不同的db_name 中。
  • @Ravinder,感谢您的回复。不要认为这很重要,use dbname 是随转储自动生成的。当您在 cmd 导入命令中指定数据库名称时,它应该覆盖 .sql 文件中的 use dbname
  • 您的意思是在命令行指定的db 会覆盖文件中指定的db 吗?如果是,我的答案是NO
  • +1,感谢您的回复。你说得对。有没有办法强制它使用不同的模式,而不编辑 .sql 文件中的文本?我需要导入的文件大小为 40GB+,因此我无法使用文本编辑器打开它来编辑默认架构。

标签: mysql import cmd mysqldump mysql-workbench


【解决方案1】:

使用任何编辑器检查您的实际 sql 文件...该文件可能在第一行中显示:

主机:localhost 数据库:yournamedatabase 等等等等等等 等等等等等等 -- 当前数据库:yournamedatabase

创建数据库 /!32312 如果不存在/ yournamedatabase /*!40100 默认字符集 latin1 */;

使用yournamedatabase;

此名称可能与您的文件名不同...可能您的文件名是 mydatabase.sql...。 所以你需要创建的是 yournamedatabase 和 mysql 而不是 mydatabase 数据库......或者为了不让自己复杂化,只需匹配名称,使它们都相同。

【讨论】:

    【解决方案2】:

    如果您使用事务,请确保在脚本的开头有一个START TRANSACTION; 命令,在脚本的末尾有一个COMMIT; 命令。

    【讨论】:

      【解决方案3】:

      我正在使用 Microsoft SQL。我所要做的就是重新启动程序或只需按刷新。它在那里你只需要刷新它就会出现。

      【讨论】:

        【解决方案4】:

        引用拉文德·雷迪斯的话:

        "检查 db.sql 文件,如果使用的 db_name 包含的 db_name 与您期望的不同。 2014 年 5 月 26 日 16:38

        为我工作。

        【讨论】:

          猜你喜欢
          • 2018-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-28
          • 1970-01-01
          • 2021-01-19
          • 2016-06-29
          相关资源
          最近更新 更多