2015-01-06 5 views
0

я пытаюсь добавить внешний ключ к таблице, но при запуске миграции я получаю эту ошибку:Добавить внешний ключ в Yii миграций

General error: 1005 Can't create table 'chooseone.#sql-49a_49' 

Его странно, потому что chooseone это имя моей базы данных. Вот как я пытаюсь добавить FK:

$this->addForeignKey('FK_user_profile', 'tbl_profile', 'user_id', 'tbl_user', 'id', 'CASCADE', 'CASCADE'); 

Так что я делаю неправильно?

+0

Вы добавляете внешние ключи ** после ** добавления таблицы? Убедитесь, что существуют таблицы 'tbl_profile' и' tbl_user' и указаны правильно. Кроме того, попробуйте без префикса 'tbl_'. –

+0

@Martijn Hols, когда я запускаю yiic migrate, сначала создает таблицу tbl_user, затем создаю tbl_profile, когда создает tbl_profile, я создаю FK сразу. код скопировал мой старый проект, где миграции корректно работают с префиксом таблицы. – nowiko

ответ

0

Я решаю этот вопрос. Я изменить определение столбца идентификаторов в tbl_user:

'id'  => 'INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY', 

в

'id'  => 'pk', 

и все работает должным образом.

+0

Ага, поэтому у вас было несоответствие типа столбца. [''pk' => 'int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY','] (https://github.com/yiisoft/yii/blob/7b0281b4f0ee6fd1e0e64f0dedd571ccce9536fd/framework/db/schema/mysql/CMysqlSchema.php# L25), который отличается от старого кода тем, что по умолчанию он является подписанным. Не уверен, имеет ли значение длина в INT (10) вместо INT (11) для отношения. –

+0

@MartijnHols, спасибо, замечу, что) – nowiko