MySQL工作台:无法导出数据库

tjvv9vkg  于 2023-03-22  发布在  Mysql
关注(0)|答案(6)|浏览(200)

我在导出数据库时遇到了一个问题,首先,我必须说明我使用的是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
1.然后我还检查了我的数据是否导入数据库。
1.现在我想把它导出到一个sql文件/或者最好是frm,myi,myd文件,以便把它们放在我的服务器上。
我试着把它们从

  • 服务器管理-〉数据导出
  • 已更改安全性(用户和权限)中的密码

但我遇到了一个问题

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

我不知道我可能做错了什么,我已经在谷歌搜索找到解决方案,但它应该是正常出口。
任何其他信息将根据要求提供。
谢谢你。

evrscar2

evrscar21#

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

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

vuktfyat2#

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

这是一个更好的解决方法,但它会让你得到想要的结果。只需使用提供的信息从CLI中获取MySQL-Table的转储-基本上它只是复制和粘贴:
从日志中可以看到,mysqldump 的参数为 --defaults-file。该文件可以并且将包含连接凭据,如 password。显然,MySQLEbenchbench没有在该文件中提供密码(“using password:否”)。
因此,只需创建一个名为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:“信息和您已经在数据库中提供的每个参数。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,MySQLEbenchbench也是这样做的,但不是正确的方法。

方案二-提供全局正确的配置文件

  • 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-参数的mysqldump-command

解决方案3不带参数直接调用mysqldump即可

这也许是最复杂的解决方案:my.cnf将使用mysqldump接受的任何参数。

[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
aurhwmvo

aurhwmvo3#

请尝试此解决方案https://bugs.mysql.com/bug.php?id=91640
实际上,我们可以使用Workbench中的高级选项来禁用列统计信息(按照https://stackoverflow.com/a/52944315/1694902)-见下文:
1.转到管理/数据导出
1.在“要导出的表”列表中选择要导出的架构
1.单击“高级选项...”按钮(右上角)
1.搜索选项“其他/column-statistics”
1.将该值设置为0
1.点击“返回”按钮(右上角)
根据这篇文章的作者,“不幸的是,每次启动MySQL Workbench时都必须这样做。
这对我来说是工作,也许它能帮助别人。

pxyaymoc

pxyaymoc4#

操作失败,退出代码为2
列统计问题也会发生,我通过修改MySQL Workbench配置文件wb_admin_export.py修复了这个问题。
在这里看到我的答案。

cwtwac6a

cwtwac6a5#

在MysqlWokbench 8.0.32上尝试了以上大多数选项并根据堆栈溢出问题的答案列出了流程后,这对我来说很有效
1.找到“C:\Program Files\MySQL\MySQL Workbench 8.0 CE\modules”。
1.创建“wb_admin_export.py”文件的备份(无论如何都要替换回来)。
1.如果MysqlWorkbench已打开,请关闭它。
1.使用管理员权限打开记事本,然后打开文件“wb_admin_export. py”。
1.搜索以下行。

skip_column_statistics = True if get_mysqldump_version()〉Version(8,0,2)and self.owner.ctrl_be.target_version〈Version(8,0,0)else False

1.只保留'skip_column_statistics = True'并删除上面一行的右边部分。(不要保留任何制表符或行注解,因为python代码块通过制表符识别,只需删除代码的右边部分)。

1.保存文件,启动MySQL工作台,然后再次尝试导出。

x6yk4ghg

x6yk4ghg6#

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

相关问题