当前位置: 首页 > 知识库问答 >
问题:

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

金英华
2023-03-14

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

>

  • 我按照http://mysqlworkbench.org/2012/07/migrating-from-ms-sql-server-to-mysql-using-workbench-migration-wizard/的指示创建了与MSSQL DB的连接,以便将其转换为MySQL DB。

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

    现在我想将其导出为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
    

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

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

    谢谢你。

  • 共有3个答案

    丘华翰
    2023-03-14

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

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

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

    这篇文章的作者说,“不幸的是,每次启动MySQL Workbench时,您都必须这样做。”

    这是我的工作,也许它可以帮助别人。

    伍耀
    2023-03-14

    这更像是一种解决方法,但它会让您获得所需的结果。只需使用提供的信息从CLI获取MySQL表的转储 - 基本上它只是复制

    从日志中看到,mysqldump 具有参数 --defaults-file。此文件可以并且将包含连接凭据,如密码。显然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参数以指向您的数据库。cnf -还要删除“Running:”信息和您已经在数据库中提供的每个参数。cnf:

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

    然后打开一个Shell,转到您的MySQLWorkbene-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也这样做,但不是正确的方式。

    如果全局配置文件存在于以下位置之一,mysqldump也会读取该文件:

      < li>C:\WINDOWS\my.ini < li>C:\WINDOWS\my.cnf < li>C:\my.ini < li>C:\my.cnf < Li > c:\ Program Files \ MySQL \ my . ini < Li > c:\ Program Files \ MySQL \ my . CNF

    因此,您可以将上面编辑的 cnf 文件中的信息放到此位置之一,然后运行 mysqldump 命令而不使用 --defaults-file-parameter

    这可能是最复杂的解决方案: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
    
    羊渝
    2023-03-14

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

    mysqldump: Got error: 1044: Access denied for user 'XXX'@'%' to database 'XXX' when doing LOCK TABLES
    
     类似资料:
    • 尝试导出大型数据库时,我收到以下错误消息: 有什么线索吗?我应该怎么做才能成功地将表从在线导出到离线。我想从Web服务器下载本地的sql。 在这种情况下,我正在使用mysql工作台从在线导出sql。

    • 我正试图从MySQL Workbench导出数据库,但在导出过程中我得到了以下信息: 正在运行:mysqldump.exe-默认值-file = " c:\ users \ user \ appdata \ local \ temp \ tmp 2h 91 wa . CNF "-user = root-host = localhost-protocol = TCP-port = 3306-defa

    • 我试图使用Windows上的MySQL Workbench 6.0导出我的数据库,以发送到Amazon RDS中的db实例,但我得到了以下错误: 有人有什么想法可以帮助我吗?

    • 当我尝试更改 mysql 数据库上的特权时,出现以下错误: 请确保所使用的帐户有权访问MySQL授权表。执行“描述mysql.db”时出错 这也是它不让我从另一个数据库导入表的原因吗?当我尝试时,我得到了错误: 操作失败与exitcode 1 09:20:16恢复D:\ design and photos \ boo . com \ db dump \ 070113 . SQL 正在运行:mysq

    • 我正在尝试连接到mysql工作台,但遇到以下错误 错误消息无法连接到数据库服务器 用户“root”从主机到服务器的连接尝试失败(位于127.0.0.1:3306:无法打开数据库)。 请:1。检查mysql是否正在服务器127.0.0.1上运行 检查mysql是否在端口3306上运行(注意:3306是默认值,但可以更改) 检查root是否具有从您的地址连接到127.0.0.1的权限(mysql权限定

    • 我想从我的实时服务器PC导出我的Web应用程序和站点的数据库,但我收到以下错误: 14:18:07 倾倒 ct (所有表) 正在运行: mysqldump.exe --defaults-file=“c:\users\admini~1\appdata\local\temp\tmphnpsqu.cnf” --user=root --host=localhost --protocol=tcp --por