MySQL Workbench:无法导出数据库

时间:2013-06-04 12:34:33

标签: mysql mysql-workbench server-administration

我遇到了有关导出数据库的问题。 首先,我必须澄清我正在使用 MySQL Workbench 5.2.47 。到目前为止我遵循的程序如下:

  1. 我按照http://mysqlworkbench.org/2012/07/migrating-from-ms-sql-server-to-mysql-using-workbench-migration-wizard/的说明操作,以便与我的MSSQL DB建立连接,以便将其转换为MySQL DB

  2. 然后我还检查了我的数据是否已导入数据库。

  3. 现在我想将它导出到sql文件中,或者最好导出到frm,myi,myd文件,以便将它们放在我的服务器中。

  4. 我试图从

    中导出它们
    • 服务器管理 - >数据导出

    • 已从安全性(用户和权限)

    • 更改了密码

    但我遇到了问题

    Dumping test (all tables)
    Running: mysqldump.exe --defaults-extra-file="c:\users\d_micha\appdata\local\temp\tmpgtwa_m.cnf"  --user=root --max_allowed_packet=1G --host=localhost --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events --no-data "test"
    
    mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
    
    Operation failed with exitcode 2
    

    我不知道我可能做错了什么,我在谷歌搜索找到了解决方案,但通常应该导出。

    任何其他信息将根据要求提供。

    谢谢。

5 个答案:

答案 0 :(得分:20)

当您没有LOCK TABLES权限时,我已经看到了这个问题。在日志中的其余访问被拒绝错误之前,您将看到此错误。尝试在工作台的“数据导出”面板中的高级设置中禁用LOCK TABLES

mysqldump: Got error: 1044: Access denied for user 'XXX'@'%' to database 'XXX' when doing LOCK TABLES

答案 1 :(得分:0)

解决方案1-为每个mysqldump-call提供正确的配置文件

这是一种解决方法,但是它将使您获得所需的结果。只需使用提供的信息即可从CLI获取MySQL表的转储-基本上,这只是复制和粘贴:

从日志 mysqldump 中可以看到,参数为-defaults-file 。该文件可以并且将包含连接凭据,例如 password 。显然,MySQLWorkbench没有为此文件提供密码(“使用密码:否”)。

因此,只需创建一个名为database.cnf的文件并将其放置在计算机中(例如c:\ temp \ database.cnf)的某个位置,其中包含以下凭据:

[client]
user=root
password=your-root-password
single-transaction=TRUE
host=localhost
port=3306
default-character-set=utf8
max_allowed_packet=1G

由于这也可以与命令行中的任何其他参数一起使用,因此您还可以添加所有其他内容,例如-single-transaction 等。 现在,获取您的日志文件条目:

Running: mysqldump.exe --defaults-extra-file="c:\users\d_micha\appdata\local\temp\tmpgtwa_m.cnf"  --user=root --max_allowed_packet=1G --host=localhost --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events --no-data "test"

并替换-defaults-extra-file 参数以指向您的 database.cnf -还要删除“ Running:”信息以及您已经使用的每个参数在您的database.cnf中提供:

mysqldump.exe --defaults-extra-file="c:\temp\database.cnf" --routines --events --no-data "test"

然后打开一个Shell,转到您的MySQLWorkbench-Folder并运行命令,例如:

cd c:\Program Files\MySQL\MySQL Workbench 6.3 CE\
mmysqldump.exe --defaults-extra-file="c:\temp\database.cnf" --routines --events --no-data "test" > c:\Users\user\Downloads\table1.sql

别忘了将输出路由到文件!

长话短说:使用CLI工具mysqldump,MySQLWorkbench所做的相同,但不是正确的方法。

解决方案2-提供全局正确的配置文件

mysqldump 还会读取全局配置文件(如果该文件位于以下位置之一):

  • C:\ WINDOWS \ my.ini
  • C:\ WINDOWS \ my.cnf
  • C:\ my.ini
  • C:\ my.cnf
  • c:\ Program Files \ MySQL \ my.ini
  • c:\ Program Files \ MySQL \ my.cnf

因此,您只需将上面编辑的cnf文件中的信息放入此位置之一,然后运行不带-defaults-file -parameter

的mysqldump-command。

解决方案3只需不带任何参数调用mysqldump

这可能是最复杂的解决方案:my.cnf将与mysqldump接受的任何参数一起使用。那么,为什么不仅仅使用它来配置转储呢?只需将所有参数添加到您的my.cnf

[client]
user=root
password=secretPassword
single-transaction=TRUE
host=localhost
protocol=tcp
port=3306
default-character-set=utf8
skip-triggers=TRUE
all-databases=TRUE
all-tablespaces=TRUE

现在在shell /命令行上运行mysqldump,不带任何参数,对您有好处:

cd c:\Program Files\MySQL\MySQL Workbench 6.3 CE\
mysqldump.exe  > c:\Users\user\Downloads\dump.sql

答案 2 :(得分:0)

请尝试此解决方案https://bugs.mysql.com/bug.php?id=91640

  

实际上,我们可以根据https://stackoverflow.com/a/52944315/1694902使用Workbench中的高级选项来禁用列统计信息-见下文:

     
      
  1. 转到“管理/数据导出”
  2.   
  3. 在“要导出的表”列表中选择要导出的模式
  4.   
  5. 点击“高级选项...”按钮(右上方)
  6.   
  7. 搜索“其他/列统计”选项
  8.   
  9. 将值设置为0
  10.   
  11. 点击“返回”按钮(右上方)
  12.   
     

根据本文的作者,“不幸的是,每次启动MySQL Workbench时都必须这样做。”

这对我有用,也许可以帮助其他人。

答案 3 :(得分:0)

操作失败,退出代码为2

还会出现列统计问题,我通过修改MySQL Workbench配置文件wb_admin_export.py来解决此问题。

请参阅我的答案here

答案 4 :(得分:-3)

MySQL workbench试图在没有密码的情况下访问您的数据库(请注意错误中的using password: NO)。令人惊讶的是,您设法访问了服务器实例。重新创建服务器实例,或者至少尝试使用新创建的实例。