昨天我在我的网站项目中安装了带有作曲家的propel2(〜@ 2.0@dev),并在下午试图让它对我现有的mysql数据库进行逆向工程。
首先,我尝试按照以下说明进行操作:
http://propelorm.org/documentation/cookbook/working-with-existing-databases.html
但仍然遇到“无法连接”错误:
./propel reverse "mysql:host={mysql domain};dbname={my db name};user={username};password={password}" --verbose
There was an error building XML from metadata: Unable to open connection
Schema reverse engineering failed.
所以我回到了文档,并认为我可能需要一个propel.php配置文件。所以我从示例中复制了一下,填写了我的db的相应信息,并提出了这个:
<?php
return [
'propel' => [
'database' => [
'connections' => [
'mpginfo' => [
'adapter' => 'mysql',
'classname' => 'Propel\Runtime\Connection\ConnectionWrapper',
'dsn' => 'mysql:host={mysql domain};dbname={my db name}',
'user' => '{username}',
'password' => '{password}',
'attributes' => []
]
]
],
'runtime' => [
'defaultConnection' => 'mpginfo',
'connections' => ['mpginfo']
],
'reverse' => [
'connection' => 'mpginfo'
],
'generator' => [
'defaultConnection' => 'mpginfo',
'connections' => ['mpginfo']
]
]
];
一旦我创建了这个propel.php文件并重新运行了反向命令,我就不再收到“无法打开连接”错误,但我也看不到任何输出!我没有看到正在创建一个schema.xml文件,并且我没有看到任何指示该命令甚至已运行的内容。
为了仔细检查,我阅读How to enable PDO_MYSQL for CLI?并验证我的服务器上安装并启用了PDO的mysql驱动程序:
$ php --ri pdo
PDO
PDO support => enabled
PDO drivers => sqlite, mysql
任何想法我的设置可能出错?我需要创建其他配置文件吗?如何获得一些输出以进行进一步调试?
答案 0 :(得分:1)
我保留了我的配置文件,像Vince建议的那样运行了--verbose
,并注意到我的schema.xml已被删除generated-reversed-database/schema.xml
答案 1 :(得分:0)
摆脱配置文件,然后使用单引号。
$ propel reverse --verbose 'mysql:host=domain;dbname=mydbname;user=username;password=password'
我遇到了完全相同的问题,这解决了它。