Fix MySQL Workbench Migration – Tables or Data Not Transferred
In this tutorial, you'll learn about Fix MySQL Workbench Migration. We cover key concepts, practical examples, and best practices.
You use MySQL Workbench's Migration Wizard to move a database from one server to another. The wizard completes without errors, but the target database is missing tables — or the row counts don't match.
Wrong ❌
You run the Migration Wizard with all defaults:
- Source: MySQL 5.7 on old‑server:3306
- Target: MySQL 8.0 on new‑server:3306
- Tick all schemas → Next → Next → Finish
Result on the target:
SHOW TABLES;
-- only 12 out of 34 tables appear
SELECT COUNT(*) FROM users;
-- 0 rows (source had 50,000)
No error message was shown. The wizard simply skipped objects silently.
Right ✅
Step 1 — Check object selection:
- Database → Migration Wizard
- After connecting source and target, the Object Selection step shows a tree
- Expand your schema — you must explicitly tick each object type:
- ☑ Tables (including Data column)
- ☑ Views
- ☑ Stored Procedures
- ☑ Functions
- ☑ Triggers
- For each table, tick Data to transfer rows (not just schema)
Step 2 — Handle incompatible types:
In the Manual Editing step, review type mappings:
Source: TINYINT(1) → Target: TINYINT(1) OK
Source: YEAR → Target: YEAR OK
Source: GEOMETRY → Target: GEOMETRY OK (MySQL 8)
Source: utf8mb3 → Target: utf8mb4 Auto‑converted
Fix any flagged items — especially deprecated types (e.g. PASSWORD, MEDIUMINT).
Step 3 — Migrate with data:
Copying data...
users: 50,000 / 50,000 rows ✅
orders: 12,340 / 12,340 rows ✅
products: 8,200 / 8,200 rows ✅
Total rows migrated: 70,540
Verify:
SELECT COUNT(*) FROM target.users; -- 50000 ✅
Root Cause
The Migration Wizard defaults to schema‑only for tables (no data). You must explicitly tick Data for each table or use Select All and then tick Data globally. Also, incompatible object types (e.g. old deprecated column types) cause silent skips.
Prevention
- After Object Selection, click Select All then tick Data for every table.
- Review the Migration Report tab after completion — it lists skipped objects.
- For large databases (>1 GB), use
mysqldumpinstead of the wizard for better reliability. - Always run row‑count validation after migration: compare
SELECT COUNT(*)per table.
Common Mistakes with workbench migration
- Using
headandtailinstead of pattern matching, causing runtime errors on empty lists - Forgetting that lazy evaluation defers computation until the value is forced, causing space leaks with unevaluated thunks
- Using
returnto exit a function early instead of wrapping a pure value in the monad
These mistakes appear frequently in real-world MYSQL code. DodaTech's contributors have identified these patterns through analysis of open-source projects and production systems.
Practice Exercise
Write a pure function that safely divides two integers using Maybe, then test it with edge cases like division by zero and negative numbers.
This exercise reinforces the concepts covered in this guide. Try implementing it before checking online solutions.
FAQ
Full migration guidance is in the DodaTech MySQL Migration course.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro