我試圖運行與爾康遷移(Devtools 2.0.10)添加外鍵約束,但它一直在抱怨ERROR: SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
錯誤:SQLSTATE [HY000]:常規錯誤:1215無法在爾康
我已經上週運行遷移,他們都運行良好,不知道現在有什麼不同。我已經報廢了數據庫,重新安裝了mysql,重新創建了數據庫,仍然做同樣的事情。
這個問題似乎與一般的外鍵有關,而不是特定的這些。它首先是抱怨一個特定的模型,所以我刪除了references
聲明只是爲了看到,它停在下一個外鍵聲明等等。該發動機被設置爲InnoDB的,該類型的鑰匙匹配,並且它,所以我敢肯定,它不是一個語法問題,而是具體的一些關於SQL(服務器)
class ModuleTranslationsMigration_100 extends Migration
{
public function morph()
{
$this->morphTable('', array(
...
'references' => array(
new Reference(
'module_translations_ibfk_1',
array(
'referencedSchema' => 'learning',
'referencedTable' => 'modules',
'columns' => array('module_id'),
'referencedColumns' => array('id')
)
),
new Reference(
'module_translations_ibfk_2',
array(
'referencedSchema' => 'learning',
'referencedTable' => 'languages',
'columns' => array('language_id'),
'referencedColumns' => array('id')
)
)
),
...
class LanguagesMigration_100 extends Migration
{
public function morph()
{
$this->morphTable('languages', array(
'columns' => array(
new Column(
'id',
array(
'type' => Column::TYPE_CHAR,
'notNull' => true,
'size' => 2,
'first' => true
)
),
...
class ModulesMigration_100 extends Migration
{
public function morph()
{
$this->morphTable('modules', array(
'columns' => array(
new Column(
'id',
array(
'type' => Column::TYPE_INTEGER,
'unsigned' => true,
'notNull' => true,
'autoIncrement' => true,
'size' => 10,
'first' => true
)
),
...
請提供相關表格的DDL語句。這是很難(閱讀:不可能),以幫助你這麼少的信息 – Mureinik
@Mureinik增加了一個。問題是如果我刪除這個類中的引用語句,下一個模型和下一個模型會出現相同的錯誤。此外,遷移運行在我的同事的機器上,這導致我認爲它更像是一個SQL(服務器)問題,而不是語法/建模 – blackbird
您的問題與您的SQL配置一起發佈。有關詳細幫助,您應該向我們提供您的SQL shema。你也應該看看這裏的答案:http://stackoverflow.com/questions/15534977/mysql-cannot-add-foreign-key-constraint – yergo