MySQL test data generator that respects your foreign keys.
Point SeedBase at a mysqldump schema or a live MySQL/MariaDB connection and get realistic rows back where every declared InnoDB foreign key resolves. AUTO_INCREMENT keys, ENUM and JSON columns, DECIMAL precision, DATETIME and utf8mb4 text are all handled, tested against a real schema with 226 tables.
Free tier · no card · EU-hosted · zero trackers
From mysqldump to a populated InnoDB database
Paste a CREATE TABLE statement or a mysqldump --no-data schema in the web app, or connect a live MySQL/MariaDB on host:3306 and let SeedBase read INFORMATION_SCHEMA. It detects each AUTO_INCREMENT primary key, every ENUM and SET column, and the FOREIGN KEY clauses on your InnoDB tables, then generates rows that satisfy them. Inserts come out in topological order, so the dump loads with foreign key checks on.
CREATE TABLE customer (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE orders (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
customer_id BIGINT UNSIGNED NOT NULL,
status ENUM('pending','paid','refunded') NOT NULL,
total DECIMAL(10,2) NOT NULL,
placed_at DATETIME NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (customer_id) REFERENCES customer(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- → INSERT INTO customer ... 200 rows, AUTO_INCREMENT id 1..200
-- → INSERT INTO orders ... customer_id resolves (declared FK),
-- status only from the ENUM set, total within DECIMAL(10,2),
-- 2-19 orders per customer, long-tail distributedWhat you get
Declared InnoDB FKs resolve
Child rows reference parents that exist, including self-references and one-to-one relations. Inserts are emitted in topological order, so the dump loads into a constrained InnoDB schema without setting SET FOREIGN_KEY_CHECKS=0.
ENUM, JSON, DECIMAL, TINYINT(1)
ENUM and SET columns only get declared values, JSON columns get valid JSON, DECIMAL stays inside its precision and scale, and TINYINT(1) reads as boolean. utf8mb4 columns get real multi-byte text, not lorem.
Production-like distributions
Not every customer has exactly 5 orders: long-tail and normal distributions create the skew where pagination and N+1 bugs actually show up.
Time-aware DATETIME/TIMESTAMP
DATETIME and TIMESTAMP values generate relative to today, so "last 30 days" reports stay populated instead of going empty as fixtures age.
Deterministic per seed
Same seed, same data, reproducible CI runs. Export the generation config as JSON and commit it next to your migrations.
VS Code & JetBrains plugins
Push your schema to SeedBase from your editor in one click, the DDL lands parsed and ready to generate.
Three ways to load the rows into MySQL
Generate once, then take the output however your workflow wants it. Because inserts are dependency-ordered, foreign key constraints and generated columns stay satisfied as the data loads.
SQL dump via mysql CLI
Download a plain SQL file of INSERT statements and import it: mysql mydb < seedbase.sql. The ordering means foreign key checks stay on.
CSV for LOAD DATA INFILE
Export CSV per table and bulk-load the big tables with LOAD DATA INFILE for speed, parents first so child rows still resolve.
Push to a live connection
Give SeedBase a MySQL or MariaDB connection on port 3306 and it writes the rows directly, in dependency order, into your dev or staging database.
FAQ
Does it respect InnoDB foreign keys and AUTO_INCREMENT?
Yes. On InnoDB tables, declared FOREIGN KEY constraints resolve: child rows reference parent rows that exist, and INSERTs are emitted in topological order so a constrained schema loads without SET FOREIGN_KEY_CHECKS=0. AUTO_INCREMENT primary keys are assigned in sequence, and child foreign keys point at those generated id values.
Can it read my mysqldump?
Yes. Paste a mysqldump --no-data schema or any CREATE TABLE ... ENGINE=InnoDB statements and SeedBase parses the columns, types and FOREIGN KEY clauses. You can also connect a live MySQL or MariaDB on port 3306 and let it read INFORMATION_SCHEMA. MyISAM tables have no real foreign keys, so relationships you want enforced should live on InnoDB.
Does it understand ENUM, JSON, DECIMAL and TINYINT(1)?
Yes. ENUM('pending','paid','refunded') columns only get values from the declared set, JSON columns get valid JSON, DECIMAL(10,2) stays inside its precision and scale, and TINYINT(1) is treated as boolean (0/1). DATETIME and TIMESTAMP values are time-aware so date-range dashboards stay populated, and utf8mb4 columns get real multi-byte text.
How do I load the rows into MySQL or MariaDB?
Download a SQL dump and import it with the mysql CLI, export CSV for LOAD DATA INFILE, or push directly into a MySQL/MariaDB connection. Because inserts come out in dependency order, generated columns and FK constraints stay satisfied as the dump loads.
Two minutes to a fully populated MySQL database
Sign up, paste your CREATE TABLE or connect a live MySQL, generate. No sales call, no credit card, the free tier is enough for a real first impression.
- InnoDB FK-consistent
- Realistic distributions
- SQL / CSV / JSON
- EU-hosted
Other stacks: SQL · Django · Prisma · Compare: vs Mockaroo · vs Faker · Anonymize real data