我昨天在我的web项目中安装了propel2 (~2.0@dev)和composer,并花了一个下午的时间试图让它来逆向工程我现有的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配置文件。所以我从例子中复制,为我的数据库填写适当的信息,并提出了这个:
<?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文件,也没有看到任何指示该命令运行的内容。
只是为了仔细检查,我读了如何为CLI启用PDO_MYSQL ?我的服务器上已经安装并启用了PDO的mysql驱动程序:
$ php --ri pdo
PDO
PDO support => enabled
PDO drivers => sqlite, mysql
你知道我的设置有什么问题吗?我需要创建其他配置文件吗?如何获得一些输出以供进一步调试?
我保留了我的配置文件,像Vince建议的那样运行--verbose
,并注意到我的schema.xml在generated-reversed-database/schema.xml
中被删除了
删除配置文件,然后使用单引号。
$ propel reverse --verbose 'mysql:host=domain;dbname=mydbname;user=username;password=password'
我有完全相同的问题,这解决了它。