By default DBIx::Class::DeploymentHandler only uses integers for versions,
this makes versioning much simpler for figuring out what version is next
-(or previous.)
+(or previous.) However, if you are using decimal numbers for versioning,
+you will need to create a separate DeploymentHandler class, as per
+L<DBIx::Class::DeploymentHandler::Cookbook::CustomResultSource>, and
+set the VersionHandler class_name from Monotonic to ExplicitVersions or
+DatabaseToSchemaVersions, as these handle version numbers as strings instead
+of integers.
=head1 install.pl
in the database.
#!/usr/bin/env perl
+
use strict;
use warnings;
use aliased 'DBIx::Class::DeploymentHandler' => 'DH';
+ use Getopt::Long;
use FindBin;
use lib "$FindBin::Bin/../lib";
use MyDatabase::Main;
- my $schema = MyDatabase::Main->connect('dbi:SQLite:mydb');
- my $dh = DH->new({
- schema => $schema,
- script_directory => "$FindBin::Bin/dbicdh",
- databases => 'SQLite',
- sql_translator_args => { add_drop_table => 0 },
- });
+ my $force_overwrite = 0;
+
+ unless ( GetOptions( 'force_overwrite!' => \$force_overwrite ) ) {
+ die "Invalid options";
+ }
+
+ my $schema = MyDatabase::Main->connect('dbi:SQLite:mydb.db');
+
+ my $dh = DH->new(
+ {
+ schema => $schema,
+ script_directory => "$FindBin::Bin/../dbicdh",
+ databases => 'SQLite',
+ sql_translator_args => { add_drop_table => 0 },
+ force_overwrite => $force_overwrite,
+ }
+ );
$dh->prepare_install;
$dh->install;
`-- 1
`-- 001-auto.yml
+You may wish to turn on L<debug logging|DBIx::Class::DeploymentHandler/"LOGGING">
+before running this script by setting the environment variable C<DBICDH_TRACE> to
+C<1>.
+
=head3 001-auto.sql
DBIx::Class::DeploymentHandler automatically generates SQL from our schema
my $dh = DH->new({
schema => $schema,
- script_directory => "$FindBin::Bin/dbicdh",
+ script_directory => "$FindBin::Bin/../dbicdh",
databases => 'SQLite',
sql_translator_args => { add_drop_table => 0 },
});