2016-03-21 17 views
1

に外部キー制約を追加することはできません私はPhalcon(デベロッパーツール2.0.10)で移行を実行しようとしているが、それはおよそERROR: SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraintエラー:SQLSTATE [HY000]:一般的なエラー:1215がPhalcon

私はしましたが文句を保ちますこの先週のマイグレーションを実行してみると、彼らはすべてうまくいきました。私はデータベースを廃止し、mysqlを再インストールし、データベースを再作成しましたが、同じことをやります。

この問題は一般的には外部キーに関連しているようであり、具体的にはそうではありません。特定のモデルについて文句を言うことから始めるので、私はreferencesステートメントを見逃してしまい、次の外部キー宣言などで停止します。エンジンは問題が

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 
         ) 
        ), 
    ... 
+0

関連する表のDDL文を入力してください。小さな情報であなたを助けるのはかなり難しい(読んだ:不可能) – Mureinik

+0

@Mureinikは1つを追加しました。問題は、このクラスのreferencesステートメントを削除すると、同じエラーが次のモデルと次のモデルで発生するということです。さらに、マイグレーションは私の同僚のマシン上で実行されるため、構文/モデリングではなくSQL(サーバー)の問題であると思われます。 – blackbird

+0

SQL設定で問題が発生しました。詳細なヘルプについては、SQLシーマをご提供ください。また、ここでこの答えを調べる必要があります:http://stackoverflow.com/questions/15534977/mysql-cannot-add-foreign-key-constraint – yergo

答えて

0

キーの型が一致し、私はそれが構文上の問題ではなく、SQL(サーバ)についての具体的なものではないと確信していますので、それは私の同僚のマシン上で正常に動作、InnoDBのにして設定されていますSQLレベルでの外部キー。構文やDDL自体に問題はありません。 Phalconはアルファベット順のファイルを/migrationsに作成し、テーブル構造を考慮していないようです。移行を実行する前に

mysql> SET GLOBAL FOREIGN_KEY_CHECKS=0;

を実行

はバックもちろん、それを設定する前に、トリックを行います。

この場合、私はすべてのmysql rpmsを削除したが、それ以上の部分を削除する前に/var/lib/mysqlディレクトリを削除したとは確信していません。

関連する問題