【问题标题】:Database migration from Sybase to MySQL: " error calling Python module function DbSQLAnywhereRE.reverseEngineer"从 Sybase 到 MySQL 的数据库迁移:“调用 Python 模块函数 DbSQLAnywhereRE.reverseEngineer 时出错”
【发布时间】:2017-02-06 03:29:50
【问题描述】:

我正在尝试使用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(connection, catalog_name, schemata_list, context)
文件“C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\db_sqlanywhere_re_grt.py”,第 169 行,在 reverseEngineer 中 目录 = super(SQLAnywhereReverseEngineering, cls).reverseEngineer(connection, '', schemata_list, context)
文件“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)) if get_tables else 0
文件“C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\db_sqlanywhere_re_grt.py”,第 41 行,wrapped_method res = 方法(cls,连接,*args)
文件“C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\db_sqlanywhere_re_grt.py”,第 145 行,在 getTableNames return [row[0] for row in cls.execute_query(connection, query)]
文件“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 Driver][Adaptive Server Anywhere]找不到表或视图:找不到表 'SYSTAB' (-141) (SQLExecDirectW)")

Traceback(最近一次调用最后一次):
File "C:\Program Files (x86)\MySQL\MySQL 工作台 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) SystemError: 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
失败

我该如何解决这个问题?

【问题讨论】:

    标签: python mysql mysql-workbench database-migration


    【解决方案1】:

    那是因为 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
    

    这是 sql Anywhere 版本 bugs.mysql.com填写错误报告。

    【讨论】:

      猜你喜欢
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 2015-04-02
      • 2016-06-14
      • 1970-01-01
      • 2017-02-02
      • 2014-05-02
      相关资源
      最近更新 更多