Propel.xml给我一个错误 - 路径的无效类型" propel.database.connections.cfs.attributes"。预期的数组,但得到了字符串

时间:2014-12-02 13:16:27

标签: php propel

我选择配置XML文件,但运行./vendor/bin/propel sql:build时出现以下错误

[Symfony\Component\Config\Definition\Exception\InvalidTypeException] 
Invalid type for path "propel.database.connections.cfs.attributes". Expected array, but got string

这是我的propel.xml文件

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<config>
    <propel>
        <database>
            <connections>
                <connection id="cfs">
                    <adapter>mysql</adapter>
                    <classname>Propel\Runtime\Connection\ConnectionWrapper</classname>
                    <dsn>mysql:host=localhost;dbname=cfs_development</dsn>
                    <user>cfs_user</user>
                    <password>cfs_pass</password>
                    <attributes></attributes>
                </connection>
            </connections>
        </database>
        <runtime>
            <defaultConnection>cfs</defaultConnection>
            <connection>cfs</connection>
        </runtime>
        <generator>
            <defaultConnection>cfs</defaultConnection>
            <connection>cfs</connection>
        </generator>
    </propel>
</config>

..和我的schema.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<database name="cfs" defaultIdMethod="native">
    <table name="projects" phpName="Project" namespace="Cfs\Model">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
        <column name="title" type="varchar" size="255" required="true" />
        <column name="user_id" type="integer" required="true"/>
        <foreign-key foreignTable="users" phpName="User">
            <reference local="user_id" foreign="id"/>
        </foreign-key>
    </table>
    <table name="users" phpName="User" namespace="Cfs\Model">
        <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
        <column name="username" type="varchar" size="255" required="true" />
        <column name="password" type="varchar" size="255" required="true" />
        <column name="salt" type="varchar" size="255" required="true" />
    </table>
</database>

我从官方文档中获取了propel.xml配置文件的详细信息,然后它只是简单地运行命令。但是,我得到这个错误?有什么建议吗?

然后我只是尝试使用PHP文件进行数据库配置(propel.php),这次命令运行没有错误。但是,我的数据库没有创建。我试图运行vendor / bin / propel模型:build也是为了看它是否生成了我的类,这也运行没有错误,但我看不出它在哪里生成我的类。

两个配置文件都在我的应用程序的根目录下,这也是我运行每个命令的地方。

2 个答案:

答案 0 :(得分:0)

似乎在XML中使用配置文件会产生一些有趣的问题 -

我尝试使用在线转换器将XML转换为YML - 这给了我一个我可以追逐的错误。

使用propel.xml文件时出错:

[Symfony\Component\Config\Definition\Exception\InvalidTypeException]                                         
Invalid type for path "propel.database.connections.unrestricted.attributes". Expected array, but got string

使用propel.yml文件时出错:

[Symfony\Component\Yaml\Exception\ParseException]
Unable to parse at line 8 (near "   settings: ").  

我将重读此页:

http://propelorm.org/documentation/reference/configuration-file.html

并进行任何我认为有用的修改。我会在它工作时更新。

嗯,它很棒。

我使用了他们的模板,只是使用.yml格式替换了我的数据库信息。为了安全起见,我还将我的multibyte4utf8字符集更改为我的数据库中的标准UTF-8。

答案 1 :(得分:0)

您应该在config.xml

中评论属性标记

dbname中的dsn-config.xml也应与schema.xml中的数据库标记名称相同。

修复此问题并重试,这样会很有效。