我在我的应用中添加了一个新的捆绑包和实体。我创建了一个User.orm.xml文件,并从命令行成功生成了该实体。现在我想在我的数据库中创建另外的表。
当我跑步时:
php app/console doctrine:schema:update --force
我收到错误。这引出了两个问题:
1)创建一个表的语法是什么,只是新的用户实体?
2)可能导致以下错误的原因。我没有更改任何其他orm文件。但是,我确实在实体中手动输入了一对多的关系。可能有关系:
[Doctrine\DBAL\DBALException]
An exception occurred while executing 'ALTER TABLE report CHANGE id id INT AUTO_INCREMENT NOT NULL':
SQLSTATE[HY000]: General error: 1025 Error on rename of './dbname/#sql-7e5_7' to './dbname/report' (errno: 150)
[PDOException]
dbname SQLSTATE[HY000]: General error: 1025 Error on rename of './dbname/#sql-7e5_7' to './dbname/report' (errno: 150)
两个表,“报告”和“报告列”是相关的。在Entity / reportcolumn.php中,它被注释为,但我没有在最初创建db的orm文件中反映它:
/**
* @var \Acme\DataBundle\Entity\Report
*
* @ORM\ManyToOne(targetEntity="Acme\DataBundle\Entity\Report")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="reportid", referencedColumnName="id")
* })
*/
private $reportid;
答案 0 :(得分:1)
一些事情
@ORM\JoinCoumns
注释和@ORM\JoinColumn
注释 - 只需@ORM\JoinColumn
就够了report.id
,因为它在该列上运行ALTER
语句NULL
但另一个是NOT NULL
,或者一个是INT
,另一个是BIGINT
)。这不是一个明确的观点,但仍有待检查。您可以运行SHOW CREATE TABLE report
并比较id
列的定义来进行检查。Entity::$reportid
重命名为Entity::$report