我给我的应用程序添加了一个新的包和实体。我创建了一个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) 两个表,"report“和"reportcolumn”是相关的。在实体/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;发布于 2013-10-28 21:33:15
几件事
@ORM\JoinCoumns注释和@ORM\JoinColumn注释--只要@ORM\JoinColumn就够了。report.id,因为它在该列上运行一个ALTER语句NULL,另一个是NOT NULL,或者一个是INT,另一个是BIGINT)。这并不是一个明确的观点,但还是有一些需要检查的地方。您可以通过运行SHOW CREATE TABLE report并比较id列的定义来进行检查。Entity::$report /Symfony将将报表实体itsef存储在关联的属性上,而不是id上,因此我将将Entity::$report重命名为Entity::$reporthttps://stackoverflow.com/questions/19642104
复制相似问题