3 پاسخ

فرستادن لاراول روی سرور داکر و مشکلات احتمالی

چند بار خواستم روی سیستم من و همکارانم به مای اسکیوال روی زمپ وصل بشیم و مجبور شدیم کد خط زیر رو اضافه کنیم

providers > AppServiceProvider.php

در پوشه ی provider در فایل بالا

        Schema::defaultStringLength(191);

الان دقیقا یادم نیست که چرا مجبور شدیم این خط کد رو اضافه کنیم شاید روی لاراول 5.6 وقتی وصل میشدیم به دیتابیس mysql نسخه ی 5 و خورده ای یک مشکلی برای بعضی انواع فیلد و ساختن اونها موقع php artisan migrate بود

اما وقتی اومدیم روی سرور داکر اون رو پابلیش کنیم مجبور شدیم


    if (!app()->runningInConsole()) {
        // Your code...
        Schema::defaultStringLength(191);
    }

این رو اضافه کنیم.

مشکل بعدی مشکل وویجر بود که وقتی ادمین وویجر نصب میشد اون هم در زمان شروع به کار و دیپلوی روی ماشین لیارا اصرار داشت به دیتابیس وصل بشه و خب میدونید بار اول که پابلیش میکنیم روی داکر اگر بخواد به دیتابیس وصل بشه و کانفیگوریشن اعمال کنه باید فایل env باشه و تنظیماتش برای اتصال به داکر صحیح باشه.

خب ما در سرویس های ابری مختلف بعد از اولین پابلیش میریم در ستینگ ماشین ابری و تنظیمات رو به وسیله ی آپلود env فایل اعمال میکنیم

میخوام بدون کسی تجربه داشته که کمی توضیح بده برای حل این مشکلات چیکار کرده و برای جلوگیری از این مشکلات چیکار هایی میشه انجام داد یا خیر

با تشکر


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

برای حل اروری که با کد زیر مشکلش حل میشه

 Schema::defaultStringLength(191);

فقط کافیه که شما از نسخه‌های آخر mysql یا همون mariaDB استفاده کنید دیگه نیازی به وارد کردن کد بالا ندارید.
بعد از این مشکل آیا فقط مشکلتون آپلود فایل env هست ؟


صابر طباطبائی یزدی
تخصص : برنامه نویس فریلنسر فول استک،...
@saber.tabatabaee 5 سال پیش مطرح شد
0

توی همون فایل AppServiceProvider

    if (env('APP_ENV') !== 'local') {
         $this->app['request']->server->set('HTTPS', false);

    }

یک همچین تنظیمی هم دارم که نمیدونم شش ماه پیش چرا اینو true کردم چرا false کردم.

فقط میدونم وویجر اذیت میکرد پاکش کردم laravel-admin.org برای پنل ادمین ریختم

شما چه ادمین پنل معرفی میکنید که از جداول ش تا ساختارش یا سفارشی سازیش مهندس و حساب و کتاب دارد و مستدسازی خوب داشته باشه.


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
2

استفاده از Schema::defaultStringLength(191)
دلیلش در زیر توضیح داده شده:

ماکزیمم حجم مجاز برای هر فیلد در دیتابیس، ۷۶۷ بایت داده هست که میتونه ذخیره بشه.

اگر از انکودینگ utf8_mb4 استفاده کنید.. این انکودینگ چون مواردی مثل ایموجی ها رو میتونه ذخیره کنه » برای هر کاراکتر نیاز به ۴ بایت جا داره...
و اگر قرار باشه از طول ۲۵۵ کاراکتر استفاده کنید.. میشه:

255 x 4 = 1020

که میبینید از حد مجاز 767 بایت رد میشه..

برای همین طول مجاز رو ۱۹۱ قرار میدند تا بشه 764 بایت و دیگه چنین مشکلی بوجود نیاد. از نسخه ۵.۷ MySQL این مشکل حل شده.
و حتی میتونید برای نسخه های قبل هم از انکودینگ utf8 معمولی استفاده کنید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام