چند بار خواستم روی سیستم من و همکارانم به مای اسکیوال روی زمپ وصل بشیم و مجبور شدیم کد خط زیر رو اضافه کنیم
providers > AppServiceProvider.php
در پوشه ی provider در فایل بالا
Schema::defaultStringLength(191);
الان دقیقا یادم نیست که چرا مجبور شدیم این خط کد رو اضافه کنیم شاید روی لاراول 5.6 وقتی وصل میشدیم به دیتابیس mysql نسخه ی 5 و خورده ای یک مشکلی برای بعضی انواع فیلد و ساختن اونها موقع php artisan migrate بود
اما وقتی اومدیم روی سرور داکر اون رو پابلیش کنیم مجبور شدیم
if (!app()->runningInConsole()) {
// Your code...
Schema::defaultStringLength(191);
}
این رو اضافه کنیم.
مشکل بعدی مشکل وویجر بود که وقتی ادمین وویجر نصب میشد اون هم در زمان شروع به کار و دیپلوی روی ماشین لیارا اصرار داشت به دیتابیس وصل بشه و خب میدونید بار اول که پابلیش میکنیم روی داکر اگر بخواد به دیتابیس وصل بشه و کانفیگوریشن اعمال کنه باید فایل env باشه و تنظیماتش برای اتصال به داکر صحیح باشه.
خب ما در سرویس های ابری مختلف بعد از اولین پابلیش میریم در ستینگ ماشین ابری و تنظیمات رو به وسیله ی آپلود env فایل اعمال میکنیم
میخوام بدون کسی تجربه داشته که کمی توضیح بده برای حل این مشکلات چیکار کرده و برای جلوگیری از این مشکلات چیکار هایی میشه انجام داد یا خیر
با تشکر
تخصص: برنامه نویس فریلنسر فول استک، عضو تیم بکند و اسکرام مستر گروه بهندام هولدینگ دکتر کرمانی
توی همون فایل AppServiceProvider
if (env('APP_ENV') !== 'local') {
$this->app['request']->server->set('HTTPS', false);
}
یک همچین تنظیمی هم دارم که نمیدونم شش ماه پیش چرا اینو true کردم چرا false کردم.
فقط میدونم وویجر اذیت میکرد پاکش کردم laravel-admin.org برای پنل ادمین ریختم
شما چه ادمین پنل معرفی میکنید که از جداول ش تا ساختارش یا سفارشی سازیش مهندس و حساب و کتاب دارد و مستدسازی خوب داشته باشه.
شاید پاسخ شما همینجا باشد
استفاده از Schema::defaultStringLength(191)
دلیلش در زیر توضیح داده شده:
ماکزیمم حجم مجاز برای هر فیلد در دیتابیس، ۷۶۷ بایت داده هست که میتونه ذخیره بشه.
اگر از انکودینگ utf8_mb4 استفاده کنید.. این انکودینگ چون مواردی مثل ایموجی ها رو میتونه ذخیره کنه » برای هر کاراکتر نیاز به ۴ بایت جا داره...
و اگر قرار باشه از طول ۲۵۵ کاراکتر استفاده کنید.. میشه:
255 x 4 = 1020
که میبینید از حد مجاز 767 بایت رد میشه..
برای همین طول مجاز رو ۱۹۱ قرار میدند تا بشه 764 بایت و دیگه چنین مشکلی بوجود نیاد. از نسخه ۵.۷ MySQL این مشکل حل شده.
و حتی میتونید برای نسخه های قبل هم از انکودینگ utf8 معمولی استفاده کنید.