Как исправить ошибку переноса Laravel 'PDOException и PDO :: __ construct' - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь выполнить команду php artisan migrate для создания таблицы в phpmyadmin

Но ошибка показа

"не удалось найти драйвер"

Я сделал php artisan serve, и это сработало

 'mysql' => [
                'driver' => 'mysql',
                'host' => env('DB_HOST', '127.0.0.1'),
                'port' => env('DB_PORT', '3306'),
                'database' => env('DB_DATABASE', 'testdb'),
                'username' => env('DB_USERNAME', 'root'),
                'password' => env('DB_PASSWORD', 'xxxx'),
                'unix_socket' => env('DB_SOCKET', ''),
                'charset' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'prefix' => '',
                'prefix_indexes' => true,
                'strict' => true,
                'engine' => null,
                'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

 DB_CONNECTION=mysql
 DB_HOST=127.0.0.1
 DB_PORT=3306
 DB_DATABASE=testdb
 DB_USERNAME=root
 DB_PASSWORD=xxxx

Это ошибка, отображаемая в командной строке:

 Illuminate\Database\QueryException  : could not find driver 
   (SQL: select * from information_schema.tables where table_schema = 
    testdb and table_name = migrations)

  at C:\AppServ\www\laravel2\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("could not find driver")
      C:\AppServ\www\laravel2\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70

  2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=testdb", "root", "xxxx", [])
      C:\AppServ\www\laravel2\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70

ожидается отображение «таблиц, успешно созданных» , а также созданных в phpmyadmin

Ответы [ 3 ]

0 голосов
/ 12 апреля 2019

Вам не хватает драйвера php-mysql для PHP, вы можете проверить его, выполнив php -i | grep mysql Если вам не хватает его, вы должны установить его с учетом типа вашей системы, например, если вы работали в системе php7.2 в Ubuntu, вы должны сделать: sudo apt-get install php7.2-mysql

0 голосов
/ 12 апреля 2019

Изменение в config/database.php файле в соответствии с этим:

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

Проверьте здесь: Ссылка

Откройте файл .env и отредактируйте его. просто установите правильные учетные данные базы данных

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=            // Your Database Name
DB_USERNAME=           // Your Database Username
DB_PASSWORD=          // Your Database Password, If no password is set then just clear it

После .env редактирования необходимо очистить кеш: php artisan config:cache

0 голосов
/ 12 апреля 2019

Убедитесь, что mysql запущен на вашем компьютере, если вы используете hometead, порт mysql может быть 33060.

, чтобы выяснить, работает ли mysql, откройте терминал на Mac или Linux или командную строку на Windows инапишите mysql -u root если вы получили ошибку, означающую, что mysql не запущен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...