繁体   English   中英

从Sybase到MySQL的数据库迁移:“调用Python模块函数DbSQLAnywhereRE.reverseEngineer时出错”

[英]Database migration from Sybase to MySQL: “ error calling Python module function DbSQLAnywhereRE.reverseEngineer”

我正在尝试使用MySQL Workbench迁移工具将数据库从Sybase迁移到MySQL

连接数据源和目标数据库没有问题,但是当它开始迁移时,我从日志消息中得到了以下问题。

开始...
连接到源DBMS ...
-正在连接...
连接到源DBMS完成
逆向工程选定的方案。
从corsi反向工程DBA,SYS,dbo,rs_systabgroup
-逆向工程目录信息
-正在准备...
追溯(最近一次通话):
文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3
CE \\ modules \\ db_sqlanywhere_re_grt.py“,行489,在reverseEngineer中
返回SQLAnywhereReverseEngineering.reverseEngineer(连接,目录名,模式列表,上下文)
文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3 CE \\ modules \\ db_sqlanywhere_re_grt.py”,行169,在reverseEngineer目录=超级(SQLAnywhereReverseEngineering,cls).reverseEngineer(连接,'',schemata_list,上下文)
文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3 CE \\ modules \\ db_generic_re_grt.py”,第258行,位于reverseEngineer table_count_per_schema [schema_name] = len(cls.getTableNames(connection,catalog_name,schema_name))如果有get_tables否则0
文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3 CE \\ modules \\ db_sqlanywhere_re_grt.py”,第41行,位于wrapped_method res =方法(cls,连接,* args)中
getTableNames中的文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3 CE \\ modules \\ db_sqlanywhere_re_grt.py”,行145返回cls.execute_query(连接,查询)中的行的[row [0]]
文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3 CE \\ modules \\ db_generic_re_grt.py”,行76,在execute_query中返回cls.get_connection(connection_object).cursor()。execute(query,* args,* * kwargs)pyodbc.ProgrammingError:('42S02',“ [42S02] [Sybase] [ODBC驱动程序] [Adaptive Server Anywhere]找不到表或视图:找不到表'SYSTAB'(-141)(SQLExecDirectW)”)

追溯(最近一次通话):
文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3 CE \\ workbench \\ wizard_progress_page_widget.py”,第192行,在thread_work self.func()中
文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3 CE \\ modules \\ migration_schema_selection.py”,行175,位于task_reveng self.main.plan.migrationSource.reverseEngineer()中
文件“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Workbench 6.3 CE \\ modules \\ migration.py”,第369行,位于reverseEngineer self.state.sourceCatalog = self._rev_eng_module.reverseEngineer(self.connection,self.selectedCatalogName, self.selectedSchemataNames,self.state.applicationData)系统错误:ProgrammingError(“('(42S02',” [42S02] [Sybase] [ODBC驱动程序] [Adaptive Server Anywhere]表或视图未找到:未找到表'SYSTAB'(- 141)(SQLExecDirectW)“)”):调用Python模块函数DbSQLAnywhereRE.reverseEngineer时出错
错误:反向工程师选择了以下架构:ProgrammingError(“('42S02',” [42S02] [Sybase] [ODBC驱动程序] [Adaptive Server Anywhere]找不到表或视图:找不到表'SYSTAB'(-141)(SQLExecDirectW) “)”):调用Python模块函数DbSQLAnywhereRE.reverseEngineer时出错
失败

我该如何解决这个问题?

这是因为要获取表名的SQL。 看db_sqlanywhere_re_grt.py:142,有:

SELECT st.table_name
FROM SYSTAB st LEFT JOIN SYSUSER su ON st.creator=su.user_id
WHERE su.user_name = '%s' AND st.table_type = 1

对于任何版本<10的sql来说,这都是有效的sql,我想您具有最新版本。 因此,您可以使用兼容的SQL编辑和更新该文件。 请记住,该文件中还需要更新更多的SQL。 同时,请在bugs.mysql.com上填写错误报告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM