【问题标题】:Trying to migrate SQL Server to MySQL using MySQL Workbench. Error: "[Microsoft][ODBC Driver Manager] Invalid argument value" when migrating data尝试使用 MySQL Workbench 将 SQL Server 迁移到 MySQL。错误:迁移数据时出现“[Microsoft][ODBC Driver Manager] Invalid argument value”
【发布时间】:2012-07-31 23:07:12
【问题描述】:

长期潜伏者,第一次海报;希望有人能帮帮我。

我正在使用 MySQL Workbench 5.2.41 将数据库从 SQL Server 迁移到 MySQL 5.0.8

整个过程顺利进行:SQL 和 MySQL 连接测试都很好,skemea 和表按预期创建,一切都检查到“批量数据传输”步骤。那时我收到此错误:

...
Migrating data...
wbcopytables.exe --odbc-source=DSN=SQL Server 11;DATABASE=;UID=sa --target=root@127.0.0.1:3306 --progress --passwords-from-stdin --thread-count=1 --table [GSAClosers_v2] [dbo].[AccountBase] `dbo` `AccountBase`
`dbo`.`AccountBase`:Copying 84 columns of 169530 rows from table [GSAClosers_v2].[dbo].[AccountBase]

ERROR: `dbo`.`AccountBase`:SQLGetData: HY009:10:[Microsoft][ODBC Driver Manager] Invalid argument value `dbo`.`AccountBase`:

Finished copying 0 rows in 0m00s
Copy helper has finished
...

对于连接器,我使用 Microsoft SQL Server/ODBC 数据源/DSN:SQL Server,对于 MySQL,使用 IP 和端口 (3306)。

SQL Server 2012 Management Studio 已连接,所有操作都按预期工作。

哦,不是这样:两者都在同一个本地主机上。

如果有人能对此有所了解,我将永远感激不尽。提前致谢

【问题讨论】:

    标签: mysql database migration sql-server-2012 workbench


    【解决方案1】:

    来自here

    [Microsoft][ODBC Driver Manager] 参数值无效。 关于您提供的错误消息和代码,这似乎是 数据库无效或无法访问。这意味着要么 数据库不存在或用户没有访问权限 数据库。

    原来你需要在服务器名之后指定实例,所以 在用于创建 ODBC 数据的对话框中的服务器名称中 源,您必须将其输入为:MyServer\SQLEXPRESS 或 .\SQLEXPRESS

    【讨论】:

    • 更多信息:在这个 db 的 12 个表中,有一个可以根据需要进行转换。其他人没有。我认为这是一个大小问题和“SQLGetData”方法。有人有类似的问题吗? @Manik Baasha:谢谢你的想法,但是,MySQL Workbench 在流程开始时连接到源和目的地都没有问题;能够读取 db 对象,并且可以毫无问题地转换表结构、存储过程和视图。
    • 发现:HY009 无效使用空指针 (DM) 参数 TargetValuePtr 是空指针。 (msdn.microsoft.com/en-us/library/windows/desktop/…)
    • TargetValuePtr [Output] 指向要返回数据的缓冲区的指针。 TargetValuePtr 不能为 NULL。
    • 好的,明白了:卸载java。安装 java 1.6,使用 MySQL 迁移工具。将所有数据类型更改为 varchar、int 和 bits。运行迁移......吃数据。
    • 我正在解决同样的问题。你是说我需要降级我的 java 版本?
    【解决方案2】:

    我认为您可能在从 wbcopytables.exe 连接到您的数据库时遇到问题。请记住,这是一个单独的工具,因此您可以从迁移向导的其余部分进行连接这一事实并不意味着您将在 wbcopytables.exe 中进行连接。

    最让我担心的是你的 DSN 有空格字符。这可能会被 Windows 终端解释为独立的命令行参数。您可以做的一件事是编辑您的 DSN 名称,删除空格,然后重试。

    您可能还想在没有 DSN 的情况下进行连接,方法是按照我的博客文章中的说明明确放置所有连接参数:How-To: Guide to Database Migration from Microsoft SQL Server using MySQL Workbench

    而且,顺便说一句,既然MySQL Workbench 5.2.42 出去了,你应该去拿它。迁移向导是相当新的,因此重要的错误修复可能会在每个最近的 Workbench 版本中推出。

    在任何一种情况下,我认为您应该 file a bug 详细解释您的问题,详细说明如何重现它、可能的解决方案等。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      好的,明白了:卸载java。安装 java 1.6,使用 MySQL 迁移工具。将所有数据类型更改为 varchar、int 和 bits。运行迁移....吃掉数据。

      【讨论】:

        猜你喜欢
        • 2016-03-17
        • 2013-11-12
        • 2014-10-15
        • 1970-01-01
        • 1970-01-01
        • 2015-10-28
        • 1970-01-01
        • 2012-05-14
        • 1970-01-01
        相关资源
        最近更新 更多