PDA

View Full Version : مشکل با migration (حل شد)



pary_daryayi
شنبه 29 شهریور 1393, 10:08 صبح
سلام . من با توجه به فیلم آموزشی آقای شهرکی یک migration ساختم و این کدها رو در متد up از فایل migration نوشتم :


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_id' => 'int(11) DEFAULT NULL',
'update_time' =>'datetime DEFAULT NULL',
'update_user_id' => 'int(11) DEFAULT NULL'

),
'ENGINE = InnoDB'

);
}




حالا وقتی migration با متد up رو در کنسول اجرا میکنم ، برام در db نمیسازه .
تصویر خطای کنسول رو گذاشتم .
کد متد up از لحاظ سینتکس مشکلی داره ؟

pary_daryayi
شنبه 29 شهریور 1393, 10:30 صبح
و اینو هم بگم ، من جدیدترین نسخه ی yii رو دانلود کردم و دارم تست میکنم ، آیا میتونه به این ارتباط داشته باشه ؟

MMSHFE
شنبه 29 شهریور 1393, 10:53 صبح
فاصله نگذارین. ENGINE=InnoDB

pary_daryayi
یک شنبه 30 شهریور 1393, 15:24 عصر
ممنونم ، اصلاح کردم ولی همچنان همون خطاها رو در کنسول نشون میده

alireza.stack
یک شنبه 30 شهریور 1393, 16:16 عصر
مشکل همون خط ENGINE=InnoDB است. اگر دقت کنید یه تک کوتیشن بعد از InnoDB هست که قبلش هیچ جا بسته نشده است.

alireza.stack
یک شنبه 30 شهریور 1393, 16:18 عصر
موضوع دیگری که میتونه مشکل ایجاد کنه خود موتور InnoDB است. برید دستی خودتون با موتور InnoDB یک جدول بسازید ببینید اصلا فعال هست. چون ممکن است غیرفعال شده باشد هر چند این ایده هم احتمالش ضعیف است چون بطور پیشفرض موتور فعال است.

بررسی موضوع ضرری ندارد. ;-)

pary_daryayi
دوشنبه 31 شهریور 1393, 04:14 صبح
موضوع دیگری که میتونه مشکل ایجاد کنه خود موتور InnoDB است. برید دستی خودتون با موتور InnoDB یک جدول بسازید ببینید اصلا فعال هست. چون ممکن است غیرفعال شده باشد هر چند این ایده هم احتمالش ضعیف است چون بطور پیشفرض موتور فعال است.

بررسی موضوع ضرری ندارد. ;-)

من دستی زیاد جدول innodb ساختم و استفاده کردم ، مشکلی نداشتم .
بعنوان مثال دو جدول رو بهم ارتباط دادم و از حالت cascade استفاده کردم و حذف در جدول فرزند به درستی اتفاق افتاده .
منظورتون از تست فعال بودن ، چنین مواردی هست ؟

alireza.stack
دوشنبه 31 شهریور 1393, 08:12 صبح
من دستی زیاد جدول innodb ساختم و استفاده کردم ، مشکلی نداشتم .
بعنوان مثال دو جدول رو بهم ارتباط دادم و از حالت cascade استفاده کردم و حذف در جدول فرزند به درستی اتفاق افتاده .
منظورتون از تست فعال بودن ، چنین مواردی هست ؟

بله. این موضوع نشون میده که موتور InnoDB فعال هست. من بجای شما بودم کد SQL داخل فایل Migration رو دستی میبردم تو MySQL اجرا می کردم تا ببینم خطا میده یا نه. زمانیکه دستی اجرا میکنید خطاها رو بهتر میتونید تشخیص بدید. یا کار بهتر میتونه این باشه که اون کد رو اینجا قرار بدید من تست بگیرم.

desatir7316
دوشنبه 31 شهریور 1393, 08:34 صبح
شما تنظيماتي كه توي main.php براي تنظيمات db انجام داديد رو بايد توي فايل console.php هم انجام بديد

pary_daryayi
دوشنبه 31 شهریور 1393, 09:01 صبح
بله. این موضوع نشون میده که موتور InnoDB فعال هست. من بجای شما بودم کد SQL داخل فایل Migration رو دستی میبردم تو MySQL اجرا می کردم تا ببینم خطا میده یا نه. زمانیکه دستی اجرا میکنید خطاها رو بهتر میتونید تشخیص بدید. یا کار بهتر میتونه این باشه که اون کد رو اینجا قرار بدید من تست بگیرم.

کدهای sql داخل migrate رو که نمیشه تو mysql اجرا کرد . ولی اگه منظورتون کد زیر هست ، من اینو دستی تو mysql وارد کردم ، خطایی نمیده و جدول رو میسازه



CREATE TABLE `ts`.`tbl_project` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`description` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`create_time` DATETIME NULL DEFAULT NULL ,
`create_user_id` INT NULL DEFAULT NULL ,
`update_time` DATETIME NULL DEFAULT NULL ,
`update_user_id` INT NULL DEFAULT NULL
) ENGINE = INNODB;

pary_daryayi
دوشنبه 31 شهریور 1393, 09:03 صبح
شما تنظيماتي كه توي main.php براي تنظيمات db انجام داديد رو بايد توي فايل console.php هم انجام بديد
فکر میکنم اینو انجام ندادم ، ممنونم امتحان میکنم .

pary_daryayi
دوشنبه 31 شهریور 1393, 15:25 عصر
ممنونم desatir7316
، مشکل همون موردی بود که شما گفتید ، حل شد :لبخندساده:

desatir7316
دوشنبه 31 شهریور 1393, 15:38 عصر
ممنونم desatir7316
، مشکل همون موردی بود که شما گفتید ، حل شد
:لبخندساده:

خواهش مي كنم