مشکل در مایگریشن

[font="Tahoma"][rtl]

بعد اجرای مایگریشن که محتوای فایلم به این شکله:

[/font]

[font="Tahoma"][font="Tahoma"][/rtl][/font]


class m131231_173214_create_project_table extends CDbMigration


{

    public function up()

    {

        $this->createTable(

            'tbl_project',

            array(

                'id'=>'pk',

                'name'=>'string NOT NULL',

                'description'=>'text NOT NULL',

                'create_time'=>'datetime default NULL',

                'create_user_is'=>'int(11) default NULL',

                'update_time'=>'datetime default NULL',

                'update_user_id'=>'int(11) default NULL',

            ),

            'ENGINE = InnoDB'

        );

    }




    public function down()

    {

        $this-dropTable('tbl_project');

    }

}




[/font]

[font="Tahoma"][font="Tahoma"][rtl]

[/font]با مشکل زیر روبرو میشم:[/font]

[font="Tahoma"][font="Tahoma"][/rtl]

[/font][code]

Yii Migration Tool v1.0 (based on Yii v1.1.14)

Total 1 new migration to be applied:

m131231_173214_create_project_table

Apply the above migration? (yes|no) [no]:yes

*** applying m131231_173214_create_project_table

> create table tbl_project ...exception 'CDbException' with 

message 'CDbCommand failed to execute the SQL statement: CDbCommand

failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 1

near "ENGINE": syntax error. The SQL statement executed was: CREATE

TABLE ‘tbl_project’ (

    "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,


    "name" varchar(255) NOT NULL,


    "description" text NOT NULL,


    "create_time" datetime default NULL,


    "create_user_is" int(11) default NULL,


    "update_time" datetime default NULL,


    "update_user_id" int(11) default NULL

) ENGINE = InnoDB’ in /var/www/yii/framework/db/CDbCommand.php:358

Stack trace:

#0 /var/www/yii/framework/db/CDbCommand.php(1324): CDbCommand->execute()

#1 /var/www/yii/framework/db/CDbMigration.php(233): CDbCommand->createTable(‘tbl_project’, Array, ‘ENGINE = InnoDB’

#2

/var/www/yii/ts/protected/migrations/m131231_173214_create_project_table.php(19):

CDbMigration->createTable(‘tbl_project’, Array, ‘ENGINE = InnoDB’)

#3 /var/www/yii/framework/cli/commands/MigrateCommand.php(385): m131231_173214_create_project_table->up()

#4 /var/www/yii/framework/cli/commands/MigrateCommand.php(109): MigrateCommand->migrateUp(‘m131231_173214_…’)

#5 [internal function]: MigrateCommand->actionUp(Array)

#6 /var/www/yii/framework/console/CConsoleCommand.php(172): ReflectionMethod->invokeArgs(Object(MigrateCommand), Array)

#7 /var/www/yii/framework/console/CConsoleCommandRunner.php(71): CConsoleCommand->run(Array)

#8 /var/www/yii/framework/console/CConsoleApplication.php(92): CConsoleCommandRunner->run(Array)

#9 /var/www/yii/framework/base/CApplication.php(180): CConsoleApplication->processRequest()

#10 /var/www/yii/framework/yiic.php(33): CApplication->run()

#11 /var/www/yii/ts/protected/yiic.php(7): require_once(’/var/www/yii/fr…’)

#12 /var/www/yii/ts/protected/yiic(4): require_once(’/var/www/yii/ts…’)

[/CODE]

[/font]

[right][rtl]

[font="Tahoma"]متن خطا که میگه سینتکس engine رو درست ننوشتی. ENGINE رو با حروف کوچک بنویس یا اون spaceهای قبل و بعد مساوی رو بردار ببین فرقی میکنه[/font]

[/rtl]

[/right]

[rtl]سلام. نه هیچ فرقی نکرد اصلا. دوباره هم نوشتم حرف اول رو بزرگ نوشتم کلا از اول نوشتم هیچ. انگار نه انگار[/rtl]


public function down()

    {

        $this-dropTable('tbl_project');

    }



change to


public function down()

    {

        $this->dropTable('tbl_project');

    }



[right][rtl]

[font="Tahoma"]این اولین باری هست که دارید migration اجرا می کنید؟ چون من حدس میزنم که شاید تنظیمات فایل console اشتباه باشه و داره دیتابیس sqlite میسازه به جای mysql! اون رو هم چک کن[/font]

[/rtl]

[/right]

[rtl]

[font="Tahoma"]این syntax رو هم تست کن شاید خطای دقیقتری بگیری[/font][/rtl]


class m101129_185401_create_news_table extends CDbMigration

{

	public function up()

	{

    	$transaction=$this->getDbConnection()->beginTransaction();

    	try

    	{

        	$this->createTable('tbl_news', array(

            	'id' => 'pk',

            	'title' => 'string NOT NULL',

            	'content' => 'text',

        	));

        	$transaction->commit();

    	}

    	catch(Exception $e)

    	{

        	echo "Exception: ".$e->getMessage()."\n";

        	$transaction->rollback();

        	return false;

    	}

	}

 

	// ...similar code for down()

}

[rtl]حق با فرید پلاس بود.مشکل از تنظیمات کنسول بود.دیتابیس کانکشنش درست نبود.دستتون درد نکنه.

موردی که نابی هم گفتن خیلی عالی بود.برای تازه کارایی مثل ما که بتونیم خطاهارو به دوستان ارایه کنیم خیلی ضروریه از ایشون هم ممنونم

[/rtl]