【问题标题】:doctrine manyToMany SQLSTATE[HY000]: General error: 1005 Can't create table (errno: 150)学说 manyToMany SQLSTATE [HY000]:一般错误:1005 无法创建表(错误号:150)
【发布时间】:2016-12-02 21:45:38
【问题描述】:

我有一个问题

/**
 * @package Entity
 * @ORM\Entity
 * @ORM\Table(name="r_country")
 */

class RCountry {
/**
 * @ORM\Column(type="string", length=2)
 * @ORM\Id
 */
protected $id;

...

    /**
 *
 * @ORM\ManyToMany(targetEntity="RLanguage")
 * @ORM\JoinTable(name="prohibited_language_display",
 *      joinColumns={@ORM\JoinColumn(name="country_id", referencedColumnName="id", onDelete="CASCADE")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="language_id", referencedColumnName="id", onDelete="CASCADE")}
 *      )
 *
 */
protected $prohibitedLanguageDisplay;

...

}

/**
 * @package Entity
 * @ORM\Entity
 * @ORM\Table(name="r_language")
 */
class RLanguage
{
    /**
     * @ORM\Column(type="string", length=20)
     * @ORM\Id
     *
     */
    protected $id;
...
}

我正在尝试与教义建立多对多关系,但是当我进行更新时会引发错误

[Doctrine\DBAL\Exception\DriverException]
执行 'ALTER TABLE 时发生异常 禁止语言显示添加约束 FK_77B02D13F92F3E70 FOREIGN KEY (country_id) REFERENCES r_country (id) ON DELETE CASCADE':
SQLSTATE[HY000]:一般错误:1005 无法创建表 'database.#sql-498_8797' (errno: 150)

                                                                                                         [Doctrine\DBAL\Driver\PDOException]                                   

SQLSTATE[HY000]:一般错误:1005 无法创建表 'database.#sql-498_8797' (errno: 150)

                                                                                                         [PDOException]                                                        

SQLSTATE[HY000]:一般错误:1005 无法创建表 'database.#sql-498_8797' (errno: 150)

这是我得到的转储 sql

CREATE TABLE disabled_language_google (country_id VARCHAR(2) NOT NULL,language_id VARCHAR(20) NOT NULL,索引 IDX_77B02D13F92F3E70 (country_id), 索引 IDX_77B02D1382F1BAF4 (language_id), PRIMARY KEY(country_id, language_id)) 默认字符集 utf8 COLLATE utf8_unicode_ci 引擎 = InnoDB;更改表 禁止语言显示添加约束 FK_77B02D13F92F3E70 FOREIGN KEY (country_id) REFERENCES r_country (id) ON DELETE CASCADE;改变 表禁止语言_google 添加约束 FK_77B02D1382F1BAF4 FOREIGN KEY (language_id) REFERENCES r_language (id) ON DELETE 级联;

我已经尝试删除数据库并使用教义创建一个新的数据库,这样没问题,但我只想进行更新,否则我将丢失数据库中的所有数据。

有没有人可以帮助我?

【问题讨论】:

    标签: php mysql symfony doctrine-orm doctrine


    【解决方案1】:

    问题是 Doctrine 生成了一个脚本来创建带有排序规则 utf_unicode_ci 的表,我将其更改为 utf8_general_ci 为了改变这一点,我必须在 app/config.yml 中将其添加到我的学说配置中

    doctrine.dbal.default_table_options.collate: "utf8_general_ci"
    

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 2014-01-26
      • 1970-01-01
      • 2017-08-20
      • 2020-12-02
      • 1970-01-01
      • 2020-12-19
      • 2021-06-16
      • 2017-04-09
      相关资源
      最近更新 更多