我尝试使用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目录?
答案 0 :(得分:0)
Reading the docs,我的怀疑是dbic-migration正在使用这种模式......
dbic-migration <generic options> <command> <options for that command>
dbic-migration是您管理迁移的主要网关。使用该工具时,您将给它一个命令(例如上面的版本)和任意数量的选项标志(以 - 或 - 开头)。
如果你说......
dbic-migration --database MySQL prepare
--database MySQL
将被忽略,因为它不是dbic-migration的一般选项。
你必须说......
dbic-migration prepare --database MySQL
其中--database MySQL
被理解为prepare命令的选项。
不幸的是,它没有警告你它不理解的选项。