DBIx迁移无法识别MySQL

时间:2015-03-22 18:08:40

标签: mysql perl database-migration dbix-class

我尝试使用MySQL来学习本教程: https://metacpan.org/pod/DBIx::Class::Migration::Tutorial::FirstMigration

我正在使用附加选项--database MySQL运行它所声明的命令。

示例:

dbic-migration -I lib/ -I local/lib/perl5/ --S Database::Main --target_dir share/ --database MySQL prepare

dbic-migration -I lib/ -I local/lib/perl5/ --S Database::Main --target_dir share/ --database MySQL install

但是在执行install命令时,它会给我以下输出:

$ dbic-migration -I lib/ -I local/lib/perl5/ --S Database::Main --target_dir share/ --database MySQL install

Since this database is not versioned, we will assume version 1
Reading configurations from share/fixtures/1/conf
Can't opendir($fh, 'share/migrations/SQLite/deploy/1'): No such file or directory at local/lib/perl5/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm line 109
DBIx::Class::Storage::TxnScopeGuard::DESTROY(): A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or error. Rolling back. at local/lib/perl5/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm line 116

我的share目录如下所示:

└── share
    ├── database-main.db
    ├── fixtures
    │   └── 1
    │       └── conf
    │           └── all_tables.json
    └── migrations
        ├── MySQL
        │   └── deploy
        │       └── 1
        │           ├── 001-auto-__VERSION.sql
        │           └── 001-auto.sql
        ├── _common
        │   └── deploy
        │       └── 1
        │           └── 002-demo.pl
        └── _source
            └── deploy
                └── 1
                    ├── 001-auto-__VERSION.yml
                    └── 001-auto.yml

当我指定MySQL时,是否有人知道为什么继续寻找SQLite目录?

1 个答案:

答案 0 :(得分:0)

Reading the docs,我的怀疑是dbic-migration正在使用这种模式......

dbic-migration <generic options> <command> <options for that command>

The docs back this up ...

  

dbic-migration是您管理迁移的主要网关。使用该工具时,您将给它一个命令(例如上面的版本)和任意数量的选项标志(以 - 或 - 开头)。

如果你说......

dbic-migration --database MySQL prepare

--database MySQL将被忽略,因为它不是dbic-migration的一般选项。

你必须说......

dbic-migration prepare --database MySQL

其中--database MySQL被理解为prepare命令的选项。

不幸的是,它没有警告你它不理解的选项。