DBIx::Class fits the bill largely. As long as one doesn't embed incompatible raw SQL and understands the limitations in SQLite. SQLite is somewhat easy to mock simplistic functionality for other engines too. Here is a snippet I use to help DBD::SQLite pretend to be MySQL for testing–
if ( $dbh->{Driver}->{Name} eq "SQLite" )
{
require Date::Calc;
$dbh->sqlite_create_function("NOW", 0, sub {
sprintf('%d-%02d-%02d %02d:%02d:%02d', Date::Calc::Today_a
+nd_Now());
});
require Math::BigInt::Random;
$dbh->sqlite_create_function("RAND", 0, sub {
Math::BigInt::Random::random_bigint( min => -9223372036854
+775808, max => 9223372036854775807 );
});
}
Update: I want to mention because it likely seems I am saying the opposite: MySQL is half-garbage and I would never choose it unless constrained to do so by managers, tools, support… PostgreSQL and MariaDB (a MySQL fork that tries to correct a lot of the idiotic defaults and such) are better choices for open source RDBMS. |