Bug #71833 Reverse engineering of schemata during migration from MSSQL 2005 to MySQL failed
Submitted: 26 Feb 2014 0:38 Modified: 6 May 2015 4:31
Reporter: Jason Walley Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Workbench: Migration Severity:S1 (Critical)
Version:6.0.9.11421 OS:Linux (CentOS 6.5)
Assigned to: CPU Architecture:Any
Tags: engineer, migration, MSSQL, python, reverse

[26 Feb 2014 0:38] Jason Walley
Description:
Getting an error when trying to reverse engineer schemata during migration.  Migrating from MSSQL 2005 on Windows Server 2003 to MySQL 5.6.16 on CentOS 6.5.  Migration wizard connects to server, grabs schemata list, and receive the message:

Reverse engineering of views for schema dbo completed!
A task has failed executing.

The message log shows:

Starting...
Connect to source DBMS...
- Connecting...
Connection to Mssql@DRIVER=FreeTDS;SERVER=192.168.XXX.XXX;PORT=1433 apparently lost, reconnecting...
Connecting to Mssql@DRIVER=FreeTDS;SERVER=192.168.XXX.XXX;PORT=1433...
Opening ODBC connection to DRIVER={FreeTDS};SERVER=192.168.XXX.XXX;PORT=1433;DATABASE=CAS_main;UID=XXX\XXXXXX;PWD=XXXX;TDS_VERSION=7.1...
Connected
Connect to source DBMS done
Reverse engineer selected schemata....
Reverse engineering dbo from CAS_main
- Reverse engineering catalog information
- Reverse engineering User Data Types...
- Preparing...
- Gathered stats for dbo
Reverse engineering 115 tables from dbo
- Retrieving table dbo.tblComplianceFaxNum...
- Retrieving table dbo.tblPaymentClientRefund...
- Retrieving table dbo.SparkTemp...
- Retrieving table dbo.tblClientSites...
- Retrieving table dbo.tblScan...
- Retrieving table dbo.tblRefPayCycle...
- Retrieving table dbo.tblRefRemitRefundMethod...
- Retrieving table dbo.tblSparkImportSetups...
- Retrieving table dbo.tblNotesWhy...
- Retrieving table dbo.tblChecksCleared...
- Retrieving table dbo.tblRefPaySchedule...
- Retrieving table dbo.tblEmployeeDirectivesSAA...
- Retrieving table dbo.tblNotesTypes...
- Retrieving table dbo.tblPaymentClientRefundStatus...
- Retrieving table dbo.tblRefAccountNumber...
- Retrieving table dbo.tblClientFlagList...
- Retrieving table dbo.tblOutgoing...
- Retrieving table dbo.tblSysVersionbe...
- Retrieving table dbo.tblClientInvoices...
- Retrieving table dbo.tblPaymentClientRefundReason...
- Retrieving table dbo.tblRefACHApproval...
- Retrieving table dbo.tblToDoQ...
- Retrieving table dbo.dbo_tblFormType...
- Retrieving table dbo.tblFormType...
- Retrieving table dbo.tblClientEvents...
- Retrieving table dbo.tblExportCalPersArchive...
- Retrieving table dbo.tblClientFlags...
- Retrieving table dbo.tblRedTag...
- Retrieving table dbo.tblEmployeeTotals_old...
- Retrieving table dbo.tblDeposit...
- Retrieving table dbo.tblClientNotices...
- Retrieving table dbo.tblRefSAAReceives...
- Retrieving table dbo.tblRefFundDirectionReports...
- Retrieving table dbo.tblClientPlans...
- Retrieving table dbo.tblClientContacts...
- Retrieving table dbo.tblRefSAAAcceptedVia...
- Retrieving table dbo.tblRefClientGroup...
- Retrieving table dbo.tblIncomingDetail...
- Retrieving table dbo.tblClientAdvisors...
- Retrieving table dbo.tblBilling_FourthParty...
- Retrieving table dbo.tblEmployeeDirectives...
- Retrieving table dbo.tblRefEncryptionKey...
- Retrieving table dbo.tblVendorContacts...
- Retrieving table dbo.tblExportCalPERS_lookup...
- Retrieving table dbo.tblSysVariablesbe...
- Retrieving table dbo.tblAdvisors...
- Retrieving table dbo.tblEmployeeTotals...
- Retrieving table dbo.tblRefInterval...
- Retrieving table dbo.tblVendorSparkLoans...
- Retrieving table dbo.tblNotes...
- Retrieving table dbo.tblVendorTSA...
- Retrieving table dbo.tblVendorSpark...
- Retrieving table dbo.tblISA...
- Retrieving table dbo.tblImportEIDtoSSN...
- Retrieving table dbo.tblVendorContactsAMS...
- Retrieving table dbo.tblRefSignatures...
- Retrieving table dbo.tblSysVersionMaster...
- Retrieving table dbo.tblExportCalPERS...
- Retrieving table dbo.ztblStatusSummary...
- Retrieving table dbo.tblChangeLog...
- Retrieving table dbo.tblRefState...
- Retrieving table dbo.tblBillMethod...
- Retrieving table dbo.tblClientType...
- Retrieving table dbo.tblContributionLimits...
- Retrieving table dbo.tblRefStatus...
- Retrieving table dbo.tblQualityReview...
- Retrieving table dbo.tblRefCheckType...
- Retrieving table dbo.dtproperties...
- Retrieving table dbo.tblEmployeeClientVendor...
- Retrieving table dbo.tblRefSAAReportTypes...
- Retrieving table dbo.tblEmployee...
- Retrieving table dbo.tblMasterFeatures...
- Retrieving table dbo.tblRefToDoQType...
- Retrieving table dbo.tblIncoming...
- Retrieving table dbo.tblClient...
- Retrieving table dbo.tblPlanFeatures...
- Retrieving table dbo.tblRefTPA...
- Retrieving table dbo.tblImportSetups...
- Retrieving table dbo.tblImportGroups...
- Retrieving table dbo.tblRefTPAClientAss...
- Retrieving table dbo.tblRefAMEventTypes...
- Retrieving table dbo.tblEmployeeDirectivesSSA...
- Retrieving table dbo.tblRefComplianceStatusID...
- Retrieving table dbo.tblForms...
- Retrieving table dbo.tblPlanIDs...
- Retrieving table dbo.tblRefPPRefundMethod...
- Retrieving table dbo.tblAMEvents...
- Retrieving table dbo.tblRefVendorGroup...
- Retrieving table dbo.tblDirectives...
- Retrieving table dbo.tblRefEmpPayrollFrequency...
- Retrieving table dbo.tblPlanIDType...
- Retrieving table dbo.tblExportCalPERSlog...
- Retrieving table dbo.Results...
- Retrieving table dbo.tblRefDocumentTypes...
- Retrieving table dbo.tblSysUsers...
- Retrieving table dbo.tblForms2...
- Retrieving table dbo.tblDocProcVendorsIRA...
- Retrieving table dbo.tblSysDefault...
- Retrieving table dbo.tblVendorOutput_Valic...
- Retrieving table dbo.tblPlanType...
- Retrieving table dbo.tblClientClassifications...
- Retrieving table dbo.tblDocuments...
- Retrieving table dbo.tblClientTSA...
- Retrieving table dbo.tblClientJobTitles...
- Retrieving table dbo.tblRefDocumentSubTypes...
- Retrieving table dbo.tblSendMethod...
- Retrieving table dbo.tblVendor...
- Retrieving table dbo.tblAgentSales...
- Retrieving table dbo.tblTemplateID...
- Retrieving table dbo.tblOffices...
- Retrieving table dbo.tblAgent...
- Retrieving table dbo.tblRefFundDirectionType...
- Retrieving table dbo.tblContacts...
- Retrieving table dbo.tblPaymentClient...
- Retrieving table dbo.tblRefPPPayor...
- First pass of table reverse engineering for schema dbo completed!
Reverse engineering 0 views from dbo
- Reverse engineering of views for schema dbo completed!
Reverse engineering 42 routines from dbo
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

How to repeat:
This is repeated using all 3 options for selecting the schemata, error is seen with all 3

Suggested fix:
Please help me fix the python code that is failing here, or tell me what I need to do on my end. Thanks.
[4 Mar 2014 0:48] Jason Walley
This has reached a critical level as I need to migrate from a failing SQL Server machine to a new server ASAP, any help would be so appreciated. Thanks!
[23 Jul 2014 12:30] Milosz Bodzek
Thank you for your bug report. Could you try on newest version of Workbench?

http://dev.mysql.com/downloads/workbench/

Also make sure that you have at least 0.92 version of FreeTDS.

http://dev.mysql.com/doc/workbench/en/wb-migration-database-mssql-drivers-linux.html
[23 Jul 2014 14:37] Jason Walley
Thanks for following up on this.  I meant to close this bug, as I figured out a work around, or the flaw in the system perhaps.  Turns out that Null values were not allowed inside the Datetime fields when doing a migration.  I turned every Datetime field in my database to a default value and migrated it successfully after that.
[6 May 2015 4:31] Philip Olson
This bug was fixed via MySQL Bug #71350 -- thank you for the bug report, and also thank you for commenting on bug #71350.