python - 数据库从Sybase迁移到MySQL : "error calling Python module function DbSQLAnywhereRE.reverseEngineer"

标签 python mysql mysql-workbench database-migration

我正在尝试从 Sybase 迁移数据库至 MySQLMySQL Workbench迁移工具。

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

Starting...
Connect to source DBMS...
- Connecting...
Connect to source DBMS done
Reverse engineer selected schemas....
Reverse engineering DBA, SYS, dbo, rs_systabgroup from corsi
- Reverse engineering catalog information
- Preparing...
Traceback (most recent call last):
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3
CE\modules\db_sqlanywhere_re_grt.py", line 489, in reverseEngineer
return SQLAnywhereReverseEngineering.reverseEngineer(connection, catalog_name, schemata_list, context)
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\db_sqlanywhere_re_grt.py", line 169, in reverseEngineer catalog = super(SQLAnywhereReverseEngineering, cls).reverseEngineer(connection, '', schemata_list, context)
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\db_generic_re_grt.py", line 258, in reverseEngineer table_count_per_schema[schema_name] = len(cls.getTableNames(connection, catalog_name, schema_name)) if get_tables else 0
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\db_sqlanywhere_re_grt.py", line 41, in wrapped_method res = method(cls, connection, *args)
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\db_sqlanywhere_re_grt.py", line 145, in getTableNames return [row[0] for row in cls.execute_query(connection, query)]
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\db_generic_re_grt.py", line 76, in execute_query return cls.get_connection(connection_object).cursor().execute(query, *args, **kwargs) pyodbc.ProgrammingError: ('42S02', "[42S02] [Sybase][ODBC Driver][Adaptive Server Anywhere]Table or view not found: Table 'SYSTAB' not found (-141) (SQLExecDirectW)")

Traceback (most recent call last):
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\workbench\wizard_progress_page_widget.py", line 192, in thread_work self.func()
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\migration_schema_selection.py", line 175, in task_reveng self.main.plan.migrationSource.reverseEngineer()
File "C:\Program Files (x86)\MySQL\MySQL Workbench 6.3 CE\modules\migration.py", line 369, in reverseEngineer self.state.sourceCatalog = self._rev_eng_module.reverseEngineer(self.connection, self.selectedCatalogName, self.selectedSchemataNames, self.state.applicationData) SystemError: ProgrammingError("('42S02', "[42S02] [Sybase][ODBC Driver][Adaptive Server Anywhere]Table or view not found: Table 'SYSTAB' not found (-141) (SQLExecDirectW)")"): error calling Python module function DbSQLAnywhereRE.reverseEngineer
ERROR: Reverse engineer selected schemas: ProgrammingError("('42S02', "[42S02] [Sybase][ODBC Driver][Adaptive Server Anywhere]Table or view not found: Table 'SYSTAB' not found (-141) (SQLExecDirectW)")"): error calling Python module function DbSQLAnywhereRE.reverseEngineer
Failed

我该如何解决这个问题?

最佳答案

那是因为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 版本 < 10 的有效 sql,我猜你有最新版本。因此,您可以使用兼容的 SQL 编辑和更新该文件。 请记住,该文件中还有更多的 SQL 需要更新。 同时,请在 bugs.mysql.com 填写错误报告.

关于python - 数据库从Sybase迁移到MySQL : "error calling Python module function DbSQLAnywhereRE.reverseEngineer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742624/

相关文章:

python - 将图像更改为 numpy 数组后,我只想导入 1 个 channel

python - 如何使用 Python NLTK 仅打印出 Wo​​rdNet 同义词集中的单词本身?

php - MYSQL:根据当前时间返回列时间值?

mysql - 加载前请求超时,有什么办法可以加快MySql查询的这个过程吗?

php - MySQL Workbench 未安装在 ubuntu 上

mysql - MySQL数据导入错误

mysql - mysql 中的 BIGINT 数据类型在创建表时给出错误

python - 如何正确创建具有 isinstance 自定义行为的新类型?

python - Django 测试客户端方法覆盖 header

php - 从 mysql 插入语句中删除链接?