0

我用 Doctrine ORM 更新了 Symfony 1.4。

我正在寻找安装插件 sfDoctrineGuard。我按照这里的说明操作: http ://www.symfony-project.org/plugins/sfDoctrineGuardPlugin

在这一步之前一切正常:symfony 学说:insert-sql

当我收到错误时:

SQLSTATE [HY000]:一般错误:1005 无法创建表 'kickboxing.#sql-2b5b_a8f'(错误 150)查询失败“ALTER TABLE profile ADD CONSTRAINT profile_sf_guard_user_id_sf_guard_user_id FOREIGN KEY (sf_guard_user_id) REFERENCES sf_guard_user(id)

它似乎确实创建了一些表:

profile sf_guard_forgot_password sf_guard_group sf_guard_group_permission sf_guard_permission sf_guard_remember_key sf_guard_user sf_guard_user_group sf_guard_user_permission

有任何想法吗?

更新:我发现这确实与教义/symfony 无关。问题似乎与mysql有关,我在MySQL中运行了上面的alter命令,当然我得到了同样的错误。

作为参考,我已经安装了 Debian Squeeze 和 mysql 5。

UPDATE2:当我跑步时

SHOW INNODB STATUS;

我明白了


最新的外键错误

110927 7:58:35 表 _kickboxing/#sql-2b5b_a86 的外键约束错误:外键 (sf_guard_user_id) REFERENCES sf_guard_user(id):在被引用列显示为第一列的被引用表中找不到索引,或表中的列类型与引用表中的约束不匹配。请注意,使用 >= InnoDB-4.1.12 创建的表中 ENUM 和 SET 的内部存储类型发生了变化,并且旧表中的此类列不能被新表中的此类列引用。有关正确的外键定义,请参阅http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

4

2 回答 2

1

看起来像一个 mySql 问题。您可以通过登录 mysql 控制台并运行来获得错误的完整(更好)描述

show innodb status

然后查找 LATEST FOREIGN KEY ERROR 以了解问题所在

于 2011-09-27T10:55:16.223 回答
0

我正在使用 Symfony 1.4.16 并配置 sfDoctrineGuardPlugin,我遵循prettyscripts.com但 schema.yml 应如下所示;

注意: user_id 是 integer(8) 这就是 sf_guard 的 id 列类型的大小。

sfGuardUserProfile:
  tableName: sf_guard_user_profile
  actAs:        { Timestampable: ~ }
  options:      { collate: utf8_unicode_ci, charset: utf8 }
  columns:
    id:         { type: integer(8), primary: true, autoincrement: true }
    user_id:    { type: integer(8), notnull: true }
    fullname:   { type: string(80) }
    email:      { type: string(100) }
  relations:
    User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one
      onDelete: cascade
      foreignType: one
      foreignAlias: Profile
于 2012-01-18T14:41:28.963 回答