YugabyteDB migration check for CockroachDB .sql files: flags 25 statements YSQL rejects or changes (UPSERT, unique_rowid, STRING, 64-bit INT, inline INDEX) plus licence-key and telemetry settings. Runs entirely in your browser — nothing is uploaded.
Same engine as the VS Code extension, byte for byte.
This page is the working piece. The full pack has everything below.
25 rules for CockroachDB .sql files that YugabyteDB YSQL rejects or reads differently, plus licence-key and telemetry settings
Buy the full version — $29· ReadyStack
Real numbers from this tool, line by line.

6 findings in one CockroachDB orders.sql: that is what a YugabyteDB migration check returned for the schema a platform team exports first when it leaves self-hosted CockroachDB.
Cockroach Labs retired the free CockroachDB Core edition with version 24.3.0 on 2024-11-18. Its Licensing FAQ says the CockroachDB Software License covers all versions from the 24.3.0 release date on, including patch fixes for 23.1 to 24.2 from that date. A cluster without a licence key gets a 7-day grace period, then is throttled to 5 concurrent open SQL transactions. Enterprise Free is for businesses with less than 10 million dollars in annual revenue, and Enterprise Free and Trial clusters are throttled after 7 days without sending telemetry. The Enterprise Trial lasts 30 days.
YugabyteDB is Apache-2.0 and speaks the PostgreSQL dialect, YSQL. CockroachDB also calls itself PostgreSQL-compatible, so the schema looks portable until the first CREATE TABLE runs.
SET CLUSTER SETTING diagnostics.reporting.enabled = false;
CREATE TABLE orders (
id INT PRIMARY KEY DEFAULT unique_rowid(),
customer_id UUID NOT NULL,
status STRING NOT NULL DEFAULT 'new',
total DECIMAL(12,2) NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
INDEX orders_customer_idx (customer_id)
);
UPSERT INTO orders (id, customer_id, status, total) VALUES (...);
diagnostics.reporting.enabled = false (licence-telemetry-off). On Enterprise Free this is the setting that gets a cluster throttled after 7 days. On YugabyteDB, delete it.INT (int-width). CockroachDB INT is 64-bit. YSQL INT is 32-bit, so ids above 2,147,483,647 overflow after the move. Write BIGINT.unique_rowid() (unique-rowid). A CockroachDB built-in with no YSQL equivalent. Use BIGINT GENERATED BY DEFAULT AS IDENTITY.STRING (string-type). A CockroachDB alias. Write TEXT.INDEX orders_customer_idx (customer_id) inside CREATE TABLE (inline-index). YSQL rejects it. Move it to CREATE INDEX ... ON orders (customer_id).UPSERT INTO (upsert). Not in YSQL. Write INSERT ... ON CONFLICT (id) DO UPDATE SET ....The rewritten file, with PRIMARY KEY (id HASH) and INCLUDE (status) on the index, returns 0 findings.
Finding 2 is the dangerous one. INT is perfectly valid PostgreSQL, so a generic linter passes it. It fails later, when an id crosses the 32-bit limit. Findings 3 to 6 fail loudly, but without the rewrite.
The extension groups its 25 rules into licence and settings (4), types and keys (5), DDL (10) and DML and operations (6). Beyond the six above it flags hash-sharded indexes with bucket_count, column families, INVERTED INDEX (use GIN), STORING (use INCLUDE), CONFIGURE ZONE and multi-region LOCALITY (use tablespaces with replica placement), AS OF SYSTEM TIME, CREATE CHANGEFEED, crdb_internal and BACKUP/RESTORE.
Open any .sql file in VS Code and the findings land in the Problems panel, each ending with the YSQL rewrite. The same engine runs on the web page at getreadystack.com/tools/yugabytedb-migration-check, in the browser, with nothing uploaded. Checking one file is free and complete. The full version scans every migration in the workspace at once and exports a Markdown report for the change ticket.
It reads a CockroachDB .sql schema or migration file and marks every line YugabyteDB YSQL rejects or reads differently, with the rewrite. It has 25 rules and 2 inputs: the .sql file text and today's date. On the sample orders.sql it returns 6 findings, including UPSERT INTO, unique_rowid(), STRING and 64-bit INT; the rewritten file returns 0.
Platform, backend and database engineers who self-host CockroachDB and are moving to YugabyteDB after CockroachDB 24.3.0 (2024-11-18) retired the free Core edition. It fits companies above the $10M annual revenue limit of Enterprise Free, and teams whose clusters would be throttled to 5 concurrent open SQL transactions without a licence key.
A PostgreSQL linter accepts INT as valid SQL, but CockroachDB INT is 64-bit and YugabyteDB YSQL INT is 32-bit, so values above 2,147,483,647 overflow after the move without any warning. CockroachDB extensions like STRING, UPSERT INTO, unique_rowid(), STORING and inline INDEX are also not in a PostgreSQL rule set.
Free: check one CockroachDB .sql file, completely, with all 25 rules in 4 groups: licence and settings (4), types and keys (5), DDL (10), DML and operations (6). No key is needed. Full version, $29 once with one licence key per person or team seat: scan every .sql migration in the workspace in one pass and export a Markdown migration report.
Under the CockroachDB Software License, businesses at or above $10M annual revenue need a paid Enterprise licence, priced per vCPU. A cluster without a key gets a 7-day grace and is then throttled to 5 concurrent open SQL transactions. Enterprise Free clusters are also throttled after 7 days without telemetry. YugabyteDB is Apache-2.0.
One question, answered by the person who built it. Your email only if you want the answer sent.