#yii #migrate #yiic
#иии #перенести #yiic
Вопрос:
Я только начал изучать фреймворк YII, и теперь я столкнулся с проблемой при попытке создать таблицу с помощью YIIC MIGRATE. Ниже приведен код моей таблицы.
class m140627_072906_create_test_table extends CDbMigration
{
public function up()
{
$this->create('tbl_locations',
array(
'id'=>'pk',
'location_name'=>'string NOT NULL',
'create_time'=>'datetime NOT NULL',
'create_user_id'=>'int(11) NOT NULL',
'update_time'=>'datetime NOT NULL',
'update_user_id'=>'int(11) NOT NULL',
), 'ENGINE=InnoDB'
);
}
}
public function down()
{
echo "m140627_072906_create_test_table does not support migration down.n";
return false;
}
}
Мой проект находится в стадии C:wampwwwbookmyroom а ниже приведена структура папок
C:wampwwwbookmyroom > у тома dir на диске C нет метки. Серийный номер тома 5291-FE18 Каталог C:wampwwwbookmyroom
06/25/2014 08:58 PM <DIR> .
06/25/2014 08:58 PM <DIR> ..
06/27/2014 12:32 PM <DIR> assets
06/25/2014 07:05 PM <DIR> css
06/25/2014 09:04 PM <DIR> framework
06/25/2014 07:05 PM <DIR> images
06/25/2014 07:05 PM 466 index-test.php
06/25/2014 09:10 PM 456 index.php
06/25/2014 07:08 PM <DIR> nbproject
06/25/2014 07:05 PM <DIR> protected
06/25/2014 07:05 PM <DIR> themes
2 File(s) 922 bytes
9 Dir(s) 8,986,624,000 bytes free
Я запустил команду YIIC MIgrate внутри защищенной папки. Я получаю приведенную ниже ошибку при выполнении команды переноса.
C:wampwwwbookmyroomprotected>YIIC Migrate
Yii Migration Tool v1.0 (based on Yii v1.1.14)
Total 1 new migration to be applied:
m140627_074906_create_table_locations
Apply the above migration? (yes|no) [no]:y
*** applying m140627_074906_create_table_locations
exception 'CException' with message 'm140627_074906_create_table_locations and its
behaviors do not have a method or closure named "create".' in
C:wampwwwyiiframeworkbaseCComponent.php:266
Stack trace:
#0
C:wampwwwbookmyroomprotectedmigrationsm140627_074906_create_table_locations.php
(16): CComponent->__call('create', Array)
#1
C:wampwwwbookmyroomprotectedmigrationsm140627_074906_create_table_locations.php
(16): m140627_074906_create_table_locations->create('tbl_locat
ions', Array, 'ENGINE=InnoDB')
#2 C:wampwwwyiiframeworkclicommandsMigrateCommand.php(385):
m140627_074906_create_table_locations->up()
#3 C:wampwwwyiiframeworkclicommandsMigrateCommand.php(109):
MigrateCommand->migrateUp('m140627_074906_...')
#4 [internal function]: MigrateCommand->actionUp(Array)
#5 C:wampwwwyiiframeworkconsoleCConsoleCommand.php(172):
ReflectionMethod->invokeArgs(Object(MigrateCommand), Array)
#6 C:wampwwwyiiframeworkconsoleCConsoleCommandRunner.php(71):
CConsoleCommand->run(Array)
#7 C:wampwwwyiiframeworkconsoleCConsoleApplication.php(92):
CConsoleCommandRunner->run(Array)
#8 C:wampwwwyiiframeworkbaseCApplication.php(180):
CConsoleApplication->processRequest()
#9 C:wampwwwyiiframeworkyiic.php(33): CApplication->run()
#10 C:wampwwwbookmyroomprotectedyiic.php(7): require_once('C:wampwwwyii...')
#11 {main}
Не могли бы вы, пожалуйста, проверить и сообщить мне об ошибке, с которой я столкнулся. Если потребуется какое-либо исправление, пожалуйста, дайте мне знать.
Комментарии:
1. Привет, ребята, я в состоянии решить эту проблему. Я ошибка ошибки в коде. Я просто использовал create вместо CreateTable в коде. Всем спасибо.
Ответ №1:
Попробуйте использовать execute
$this->execute("CREATE TABLE `tbl_locations` (
'location_name'=>'string NOT NULL',
'create_time'=>'datetime NOT NULL',
'create_user_id'=>'int(11) NOT NULL',
'update_time'=>'datetime NOT NULL',
'update_user_id'=>'int(11) NOT NULL'
PRIMARY KEY (`id`),
) ENGINE=InnoDB");
Комментарии:
1. Спасибо, проблема была в том, что я использовал неправильный код create() вместо CreateTable(), а также я постараюсь использовать ur-код для будущей таблицы миграции.
2. Этот код не будет работать, это недопустимый SQL. У вас все еще есть
=>
часть из массива.