【问题标题】:Doctrine2 migrations inside Symfony2 throw Exception on index creationSymfony2 中的 Doctrine2 迁移在创建索引时抛出异常
【发布时间】:2013-03-20 09:50:49
【问题描述】:

问题

我运行之前没有待处理的迁移:

app/console doctrine:migration:diff
app/console doctrine:migration:migrate

我收到了这个错误:

ALTER TABLE session ADD CONSTRAINT FK_9955C22EA76ED395 FOREIGN KEY (user_id) REFERENCES user(id)
Migration 20130320103822 failed during Execution. Error SQLSTATE[HY000]: General error: 1005 Can't create table 'mydb.#sql-3e4_75e0' (errno: 150)

[PDOException]                                                                                    
  SQLSTATE[HY000]: General error: 1005 Can't create table 'mydb.#sql-3e4_75e0' (errno: 150)  

额外知识

  1. 我正在通过类中的注释声明我的实体。
  2. 此代码正在运行(但我必须手动运行一些在出现此类异常后未运行的操作)

我想知道什么

  1. 是什么导致了这个错误?
  2. 有什么办法可以解决吗? (例如通过 Doctrine 更新或一些 MySQL 参数)

【问题讨论】:

  • 尝试在 MySQL CLI 中(手动)运行 DDL SQL,然后运行 ​​SHOW ENGINE InnoDB STATUS 以获取更多详细信息。错误 1005 是因为引用的表中缺少索引。
  • 这看起来你的mysql用户没有创建表的权限,但是Ocramius的建议对于全面调试是必要的。
  • 谢谢,我会检查一下,并告诉你

标签: symfony doctrine-orm database-migration doctrine-migrations


【解决方案1】:

@Ocramius 和@Lighthart 提出的建议,这是一个纯 SQL 问题。它来自产生不一致 SQL 的有缺陷的 Doctrine 实体声明。

问题中描述的错误与列级别的不一致有关,键为 int(11),外键为 varchar(255)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2019-10-22
    • 2014-04-17
    • 1970-01-01
    • 2014-03-22
    相关资源
    最近更新 更多