2016-09-28 2 views
2

마이그레이션 도구를 사용하여 Sybase에서 MySQL으로 데이터베이스를 마이그레이션하려고합니다.Sybase에서 MySQL로 데이터베이스 마이그레이션 : "Python 모듈 함수 호출 DbSQLAnywhereRE.reverseEngineer"

데이터 원본과 대상 데이터베이스를 연결하는 데 문제가 없지만 마이그레이션이 시작되면 로그 메시지에서 다음과 같은 문제가 발생합니다.

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

이 문제를 어떻게 해결할 수 있습니까?

답변

0

테이블 이름을 가져 오는 SQL 때문입니다. db_sqlanywhere_re_grt.py:142 봐,이 : 이것은 SQL 어디서나 버전 < (10)에 대한 유효한 SQL이고, 내 생각

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로 해당 파일을 편집하고 업데이트 할 수 있습니다. 해당 파일에서 업데이트해야하는 SQL이 훨씬 더 많습니다. 그동안 버그 리포트를 bugs.mysql.com으로 작성하십시오.

관련 문제