Upgrade Your Production Database with Confidence
Our migration assessment and risk mitigation tool can help. By analyzing your database traffic, we quickly identify and prioritize incorrect and invalid queries in your database migration or database upgrade. We also detect deprecated SQL syntax, new reserved words, and offer advice on queries with version-specific configurations that should be reviewed. By addressing these critical issues, you can migrate and upgrade with higher confidence.
Key Features:
- Supports MySQL, MariaDB, Percona Server, PostgreSQL, Oracle and SQL Server databases and products using MySQL or PostgreSQL protocol.
- Easily operates on-premise, self-hosted cloud, or managed RDBMS servcies in AWS, GCP, Azure, OCI,Digital Ocean and other cloud providers.
- Runs independently from existing testing infrastructures makinga this ideal for operations teams.
- Eliminates the need for a complex application stack or dedicated end-to-end testing environments.
- Captures up-to 100% of data access patterns for thorough validation.
Example Reporting
SQL Errors
Catch statements that produce SQL errors in the next version. Is your WordPress installation ready for MySQL 8.0?
16 Error(s)
SQL: "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC;"
Error 1055 (42000): Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'wp_blog.wp_posts.post_date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
SQL: SELECT ST_GeomFromWKB(Point(0, 0));
ERROR 3037 (22023): Invalid GIS data provided to function st_geomfromwkb.
SQL: SELECT * FROM mysql.character_sets;
ERROR 3554 (HY000) at line 70: Access to data dictionary table 'mysql.character_sets' is rejected.
SQL Deprecations
Catch all SQL syntax you may not be aware is deprecated.
112 Warning(s)
SQL: SELECT JSON_MERGE('["a"]','["b"]')
Warning (Code 1287): 'JSON_MERGE' is deprecated and will be removed in a future release. Please use JSON_MERGE_PRESERVE/JSON_MERGE_PATCH instead
SQL: "SELECT ST_GeomFromWKB(Point(0, 0));"
Warning: (3195) st_geometryfromwkb(geometry) is deprecated and will be replaced by st_srid(geometry, 0) in a future version. Use st_geometryfromwkb(st_aswkb(geometry), 0) instead.
SQL: SELECT DATE('2024-01-01 10:00:00')
Warning (Code 4096): Delimiter ' ' in position 11 in datetime value '2024-01-01 10:00:00' at row 1 is superfluous and is deprecated. Please remove.
SQL: SELECT BINARY 'a' = 'A'
Warning (Code 1287): 'BINARY expr' is deprecated and will be removed in a future release. Please use CAST instead
SQL Warnings
Catch SQL statements throwing warnings that your application may not be processing as errors. These are simulated statements for demonstration purposes.
SQL: SELECT DATE('2024-02-30');
Warning (Code 1292): Incorrect datetime value: '2024-02-30'
SQL: "SELECT CAST('ABCDEFG' AS CHAR(5));"
Warning: (1292) Truncated incorrect CHAR(5) value: 'ABCDEFG'
SQL: SELECT * FROM information_schema.schemata WHERE schema_name='sys' AND catalog_name=1;
Warning (Code 1292): Truncated incorrect DOUBLE value: 'def'
SQL Notices
Review SQL statements that include specific hints for execution that may change with a new major version ugprade.
4 Notice(s)
SQL: "SELECT * FROM mysql.db USE INDEX (`User`);"
Review query for required future usage of 'USE INDEX'
SQL: "SELECT /*+ NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE ...;
Review query for required future usage of 'NO_BKA'
Cross-product SQL incompatibilies
Considering moving your product from MySQL to PostgreSQL or moving your product from MariaDB to MySQL? Verify all your statement are compatible before considering the larger project impact.
2 Error(s)
SQL: SELECT a.country_id, c.name, COUNT(*) AS cnt FROM airport a INNER JOIN location.country c USING (country_id) GROUP BY country_id, name ORDER BY 3 DESC LIMIT 10;
ERROR: pq: column reference 'name' is ambiguous.
SQL: SELECT name, iata_code, home_url, ROUND( 3959 * 2 * ASIN(SQRT(POWER(SIN((41.42008165125718- abs(latitude)) * pi()/180 / 2), 2) + COS(41.42008165125718 * pi()/180 ) * COS(abs(latitude) * pi()/180) * POWER(SIN((-73.27743188814966 - longitude) * pi()/180 / 2), 2) )),2) as distance FROM airport WHERE type like '%airport' HAVING distance < 50 ORDER BY distance;"
ERROR: function round(double precision, integer) does not exist
Ideal for MySQL 5.7 EOL Uprades
Are you stuck with the AWS RDS and AWS RDS Aurora MySQL 5.7 EOL (*) and the additional expense of AWS Extended Support.
- Our agent deploys directly in your AWS account. You have total control over your security.
- No application queries, PII or business data leaves your AWS Account.
- Visualize critical impacts with a single panel dashboard.
(*) AWS RDS MySQL 5.7 EOL started on March 1st. AWS RDS PostgreSQL 11 EOL started on April 1st. AWS RDS Aurora MySQL 5.7 EOL started Nov 1st. Don't keep paying for the Extended Support.
Get a special offer for this time-critical situation. Purchase your first month subscription and get a second month FREE.
Major Database Upgrade Use Cases
- AWS RDS MySQL 5.7 EOL upgrades to MySQL 8.0. AWS RDS Extended Support charges starting Mar 1, 2024
- AWS RDS Postgres 11 EOL upgrades. AWS RDS Extended Support charges starting Apr 1, 2024
- AWS RDS Aurora Postgres 11 EOL upgrades. AWS RDS Extended Support charges starting Apr 1, 2024
- AWS RDS Aurora MySQL 5.7 EOL upgrades to MySQL 8.0. AWS RDS Extended Suppport changes starting Nov 1, 2024
- MariaDB 10.x/11.x migrations to MySQL 8.0.
- GCP CloudSQL MySQL 5.7 EOL upgrades to MySQL 8.0.
- AWS EC2 self-hosted MySQL 5.7 EOL migrations to AWS RDS MySQL 8.0.