پیش به سوی تابستان؛ با تخفیف‌های داغ راکت!

بزن بریم!
ثانیه
دقیقه
ساعت
روز
یونس نورزهی
2 هفته پیش توسط یونس نورزهی مطرح شد
2 پاسخ

اتصال mysql به لاراول

دوستان سلام میخواستم این موضوع رو در میون بزارم با شما در مورد اتصال mysql به لاراول هستش من امروز توی کلاس به یه اروری که در ارور پایین مشاهده میکنید خوردم.

Illuminate\Database\QueryException 

  could not find driver (Connection: mysql, SQL: select table_name as `name`, (data_length + index_length) as `size`, table_comment as `comment`, engine as `engine`, table_collation as `collation` from information_schema.tables where table_schema = 'laravel_blog' and table_type = 'BASE TABLE' order by table_name)

  at vendor\laravel\framework\src\Illuminate\Database\Connection.php:822
    818▕                     $this->getName(), $query, $this->prepareBindings($bindings), $e
    819▕                 );
    820▕             }
    821▕
  ➜ 822▕             throw new QueryException(
    823▕                 $this->getName(), $query, $this->prepareBindings($bindings), $e
    824▕             );
    825▕         }
    826▕     }

  1   vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:65
      PDOException::("could not find driver")

  2   vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:65
      PDO::__construct()

این خطا could not find driver به این معنیه که PHP نتونسته درایور PDO مورد نیاز برای اتصال به پایگاه داده MySQL رو پیدا کنه.
به زبان ساده‌تر، برنامه‌ی شما (که از Laravel استفاده می‌کنه) می‌خواد به دیتابیس MySQL وصل بشه، اما PHP (زبانی که لاراول باهاش نوشته شده) ابزار لازم برای صحبت کردن با MySQL رو نداره.

دلایل اصلی این مشکل:

  1. ماژول pdo_mysql در PHP فعال نیست: این رایج‌ترین دلیلشه. PHP برای اتصال به MySQL نیاز به یک ماژول خاص به نام pdo_mysql داره که باید فعال باشه.
  2. ماژول pdo_mysql نصب نشده: در برخی موارد ممکنه این ماژول اصلا روی سرور یا سیستم شما نصب نشده باشه.
  3. مشکل در تنظیمات PHP: فایل php.ini به درستی تنظیم نشده.

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

  1. فعال کردن ماژول pdo_mysql:
    ✔ فایل php.ini رو پیدا کن: مسیر این فایل بسته به سیستم عامل و نحوه‌ی نصب PHP متفاوت هست. معمولاً در لینوکس ممکنه در مسیرهایی مثل /etc/php/7.x/cli/php.ini یا /etc/php/7.x/apache2/php.ini (به جای 7.x نسخه PHP رو قرار بده) باشه. در ویندوز هم معمولاً در پوشه‌ی نصب PHP.
    ✔ خط extension=pdo_mysql رو پیدا و فعال کن: در فایل php.ini دنبال خطی بگرد که شبیه به این باشه:

    ;extension=pdo_mysql

    علامت ; رو از ابتدای این خط بردار تا فعال بشه:

    ini
    extension=pdo_mysql

    گاهی اوقات ممکنه به جای pdo_mysql، اسم فایل php_pdo_mysql.dll (در ویندوز) یا pdo_mysql.so (در لینوکس) باشه.
    ✔ ذخیره و ریستارت سرور وب: بعد از تغییر فایل php.ini، حتماً سرور وب (مثل Apache یا Nginx) رو ریستارت کن تا تغییرات اعمال بشن. اگر از PHP-FPM استفاده می‌کنی، اون رو هم ریستارت کن.

  2. نصب ماژول pdo_mysql (اگر نصب نشده):
    ✔ در لینوکس (بر اساس توزیع):
    ✔ برای Debian/Ubuntu:

    bash
    sudo apt-get update
    sudo apt-get install php-mysql

    ✔ برای CentOS/RHEL/Fedora:

    bash
    sudo yum install php-mysqlnd

    یا

    bash
    sudo dnf install php-mysqlnd

    بعد از نصب، حتماً سرور وب رو ریستارت کن.
    ✔ در ویندوز: معمولاً ماژول‌های PHP در زمان نصب XAMPP/WAMP یا خود PHP نصب می‌شن. اگر اینطور نیست، باید مطمئن بشی که PHP رو به درستی نصب کردی و ماژول‌هاش در دسترس هستن.

  3. بررسی PHP Info (برای اطمینان):
    برای اینکه مطمئن بشی ماژول pdo_mysql فعال شده، می‌تونی یک فایل info.php بسازی و محتوای زیر رو داخلش بذاری:

    <?php
    phpinfo();
    ?>

    این فایل رو توی روت پروژه‌ی Laravel یا جایی که وب سرورت بهش دسترسی داره قرار بده و از طریق مرورگر بهش برو (مثلاً http://localhost/info.php). توی صفحه‌ی phpinfo دنبال بخش PDO بگرد و مطمئن شو که pdo_mysql در اونجا لیست شده باشه.
    🔑 نکته کلیدی که باید به اون توجه کنید اینه اگر روی سیستمتون 2 تا php داشته باشین هر کاری کنید برنامه تون اجرا نمیشه پس باید این php که روی environment سیستم شخصیتون هست باید اکستنژن های مورد نظر فعال بشه تا کار کنه من برای همین نزدیک به 1 ساعت وقتم طلف شد پس توجه کنید حتما.


ثبت پرسش جدید
رادمان بیگدلی
تخصص : گرافیست و برنامه نویس
@radmanbigdeli 4 روز پیش مطرح شد
0

برای اینکه مطمئن بشی ماژول pdo_mysql فعاله، این دستور رو توی ترمینال بزن:
php -m | grep pdo_mysql

یا اگر چند نسخه PHP نصب داری
حتماً بررسی کن که نسخه‌ای از PHP که Laravel داره استفاده می‌کنه، همونیه که ماژول روش فعاله. مثلاً ممکنه php در CLI نسخه ۸ باشه ولی Apache از نسخه ۷.۴ استفاده کنه.
php -v

یه ریستارتم تو پروژه بزن شاید حل شد :)


یونس نورزهی
تخصص : Web Developer
@younes.nz 4 روز پیش مطرح شد
0

دقیقا!
اینم راه حل عالیه.


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

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