PDA

View Full Version : مشکل با Migrations در yiic



M_SOHRABLOU
جمعه 02 اسفند 1392, 15:45 عصر
با سلام خدمت اساتیدمیشه طریقه کار کردن با migration در command line رو کسی توضیح بده؟ من کلیه مراحل رو انجام دادم ولی موقع اجرا این خطا رو بهم نشون میدهخیلی گشتم ولی نتیجه مطلوبی حاصل نشد.ممنون میشوم کسی کمک کنه.ضمنا بنده تنظیمات path yiic رو ست کردم و اجرای خط فرمان هم در پوشه protected پروژه ام انجام دادم.
(آدرس ها صحیح می باشند)



exception 'CException' with message 'Property "CConsoleApplication.user" is not defined.'
in D:wampwwwyiiframeworkbaseCComponent.php:173

Stack trace:
0 D:wampwwwyiiframeworkbaseCModule.php(513): CComponent->__set('user', Array)
1 D:wampwwwyiiframeworkbaseCApplication.php(161): CModule->configure(Array)
2 D:wampwwwyiiframeworkYiiBase.php(125): CApplication->__construct('D:wampwwwbor...')
3 D:wampwwwyiiframeworkYiiBase.php(113): YiiBase::createApplication('CConsoleApplica...','D :\wamp\www\bor...')
4 D:wampwwwyiiframeworkyiic.php(23): YiiBase::createConsoleApplication('D:\wamp\www\bor ...')
5 D:wampwwwborideprotectedyiic.php(7): require_once('D:\wamp\www\yii...')
6 {main}

MMSHFE
جمعه 02 اسفند 1392, 22:11 عصر
تنظیمات دیتابیس رو در فایل config/console.php رو هم اصلاح کردین؟ خطا داره میگه که کامپوننت user توی این فایل تنظیمات تعریف نشده.

desatir7316
دوشنبه 05 اسفند 1392, 21:25 عصر
سلام خسته نباشید
از migrate فقط برای db استفاده می شه یا می شه کل سایت رو یه نسخه جابجا کرد؟
وقتی از safe استفاده می شه مگه قرار نیست که یا همه انجام بشن یا هیچکدوم پس چرا مثلا جداول ساخته می شن ولی اونجا که کلید ها تعریف شدن و مشکل دارن ، جدول ها پاک نمی شن؟

MMSHFE
دوشنبه 05 اسفند 1392, 23:10 عصر
Migration فقط برای دیتابیس به کار میره. ضمناً مشکل از Yii نیست. بطور کلی کلیه عملیاتی که Schema رو تغییر میدن (مثل ساخت جدول جدید و...) توی MySQL بصورت Transaction Unsafe هستن چون درصورت بروز خطا، Exception رخ میده و از برنامه خارج میشه و ازطرفی خیلی از این دستورات، منجر به اجرای یک COMMIT مخفی میشن (لینک (http://dev.mysql.com/doc/refman/5.0/en/implicit-commit.html)). این مشکل توی DBMSهایی مثل Oracle وجود نداره ولی MySQL هم قراره در نسخه های جدیدش این مشکل رو رفع کنه. بطور کلی برای آشنایی کامل با Migrationها در Yii این لینک (http://www.yiiframework.com/doc/guide/1.1/en/database.migration) رو مشاهده کنید.

desatir7316
سه شنبه 06 اسفند 1392, 13:41 عصر
مثلا فرض کنید توی up چند جدول و کلید اضافه شدن
توی down قرار پاک بشن
چرا وقتی کد ها up کامل اجرا نشدن در صورتی که رکوردی به جدول مخصوص migratation ها اضافه شده، دیگه down درست کار نمی کنه و باید دستی حذف بشن( هم جدول های جدید هم رکورد جدید توی جدول مخصوص migration)

MMSHFE
سه شنبه 06 اسفند 1392, 14:01 عصر
چون safeDown میخواد همه رو با هم حذف کنه ولی وقتی جدول حذف میشه، دیگه foreignKey وجود نداره که حذف بشه و بخاطر همین کلاً Rollback میشه. این هم از مشکلات MySQL هست که CREATE TABLE باعث AUTO COMMIT میشه ولی DELETE TABLE نمیشه.

MMSHFE
چهارشنبه 07 اسفند 1392, 14:55 عصر
البته اینجور وقتها میتونید وقتی مشکل رو برطرف کردین، دستوری که انجام شده رو توی Migration کامنت کنید و با yiic migration mark yymmdd_hhmmss به Yii بگین جدول History مربوط به Migrationها رو به زمان مشخصی برگردونه (بجای yymmdd_hhmmss باید تاریخ و زمانی که توی اسم Migration موردنظرتون گذاشته شده رو بگذارین. اینطوری فقط جدول اصلاح میشه و عملاً Migration مشخص شده اعمال نمیشه. بعد میتونید با yiic migrate یا yiic migrate down فایل Migration رو اجرا کنید و چون دستوراتی که اعمال شده رو کامنت کردین، بقیه تغییرات انجام میشه.