Не удается создать таблицу через YIIC Migreate create

#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. У вас все еще есть => часть из массива.