MySQL · MariaDB · InnoDB test data

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.

DDL in, SQL out
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 distributed

What you get

FK-consistent

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.

mysql types

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.

realistic

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.

current

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.

reproducible

Deterministic per seed

Same seed, same data, reproducible CI runs. Export the generation config as JSON and commit it next to your migrations.

editor

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.

SeedBase resolves declared foreign keys. Relationships you only enforce in application code, or columns on MyISAM tables that carry no real FOREIGN KEY constraint, are not inferred automatically, you can add a column hint to wire them up. InnoDB is the engine that gives the generator real constraints to follow.

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
Start free

Other stacks: SQL · Django · Prisma  ·  Compare: vs Mockaroo · vs Faker  ·  Anonymize real data