在MySQL Workbench中调用Python模块函数时出错
我现在有点无从下手了,而且到目前为止在MySQL Workbench的错误报告网站上没有得到任何反馈,所以我想把这个问题抛给更多的人看看。
我正在尝试把一个在Windows Server 2003上的MSSQL服务器的数据迁移到一个在Centos 6.5虚拟机上运行的MySQL服务器。我可以连接到源数据库和目标数据库,选择一个模式,然后进行一次数据表的提取。但是在这个过程中,之后就失败了,并出现了以下错误:
Traceback (most recent call last): File "/usr/lib64/mysql-workbench/modules/db_mssql_grt.py", line 409, in reverseEngineer reverseEngineerProcedures(connection, schema) File "/usr/lib64/mysql-workbench/modules/db_mssql_grt.py", line 1016, in reverseEngineerProcedures for idx, (proc_count, proc_name, proc_definition) in enumerate(cursor): MemoryError Traceback (most recent call last): File "/usr/share/mysql-workbench/libraries/workbench/wizard_progress_page_widget.py", line 192, in thread_work self.func() File "/usr/lib64/mysql-workbench/modules/migration_schema_selection.py", line 160, in task_reveng self.main.plan.migrationSource.reverseEngineer() File "/usr/lib64/mysql-workbench/modules/migration.py", line 353, in reverseEngineer self.state.sourceCatalog = self._rev_eng_module.reverseEngineer(self.connection, self.selectedCatalogName, self.selectedSchemataNames, self.state.applicationData) SystemError: MemoryError(""): error calling Python module function DbMssqlRE.reverseEngineer ERROR: Reverse engineer selected schemata: MemoryError(""): error calling Python module function DbMssqlRE.reverseEngineer Failed
我最开始以为这是内存错误,所以我把机器的内存增加到了16 GiB。但这个错误在任何大小的数据库上都会出现,我还尝试过一些非常小的数据库,里面几乎没有表。
有什么想法吗?谢谢你们的关注。
2 个回答
0
发帖的人(我猜)在他们的错误报告中这样写道:
[...] 我找到了一个解决办法,或者说是发现了系统中的一个缺陷。结果发现,在进行数据迁移时,Datetime字段里不允许有空值。我把数据库里所有的Datetime字段都设置了一个默认值,然后成功完成了迁移。
0
如果有人遇到这个问题,我来分享一下我的解决办法。我之前也遇到了同样的问题,最后是通过去掉一些非ASCII字符来解决的,这些字符出现在模式、表格……基本上是所有MSSQL对象中。这个问题还因为我安装了SQL#(网址:www.sqlsharp.com)而变得复杂,SQL#会添加一些函数和存储过程,并且它有一个叫SQL#的模式。你可以用下面的命令来删除它:
EXEC SQL#.SQLsharp_Uninstall
一旦去掉了非ASCII字符,迁移就能顺利进行。