首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理论图式错误

理论图式错误
EN

Stack Overflow用户
提问于 2013-10-28 18:12:42
回答 1查看 1.2K关注 0票数 0

我给我的应用程序添加了一个新的包和实体。我创建了一个User.orm.xml文件,并从命令行成功地生成了实体。现在,我想在我的数据库中创建额外的表。

当我跑步时:

代码语言:javascript
复制
php app/console doctrine:schema:update --force

我犯了个错误。这就引出了两个问题:

1)创建一个表,只创建新的用户实体,语法是什么?

( 2)可能导致以下错误的原因。我没有更改任何其他的orm文件。但是,我在实体中手动输入了一对多的关系。这可能是相关的:

代码语言:javascript
复制
  [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文件中:

代码语言:javascript
复制
    /**
     * @var \Acme\DataBundle\Entity\Report
     *
     * @ORM\ManyToOne(targetEntity="Acme\DataBundle\Entity\Report")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="reportid", referencedColumnName="id")
     * })
     */
    private $reportid;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-28 21:33:15

几件事

  1. 您不应该同时需要@ORM\JoinCoumns注释和@ORM\JoinColumn注释--只要@ORM\JoinColumn就够了。
  2. 您做了一些事情使它(模式工具)认为您更改了report.id,因为它在该列上运行一个ALTER语句
  3. SQL错误看起来像是两个不匹配的外键列(即,一个是NULL,另一个是NOT NULL,或者一个是INT,另一个是BIGINT)。这并不是一个明确的观点,但还是有一些需要检查的地方。您可以通过运行SHOW CREATE TABLE report并比较id列的定义来进行检查。
  4. Entity::$report /Symfony将将报表实体itsef存储在关联的属性上,而不是id上,因此我将将Entity::$report重命名为Entity::$report
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19642104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档