Laravel 5.1 - 连接到 MySQL 数据库 (MAMP)

sen*_*nty 6 mysql database pdo mamp laravel

网上有一些主题正在讨论这个问题,但是,我找不到对该问题的任何整洁的解释或对该问题的任何可靠的答案。我想要实现的是将 Laravel 5.1 连接到 MAMP 的 MySQL 数据库。


在我的config>app.php 中:

   'default' => env('DB_CONNECTION', 'mysql'),


   'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost:8889',
        'database'  => 'test',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
        'prefix'    => '',
        'strict'    => false,
    ],
Run Code Online (Sandbox Code Playgroud)

在我的.env 中:

      DB_HOST=localhost
      DB_DATABASE=test
      DB_USERNAME=root
      DB_PASSWORD=root
Run Code Online (Sandbox Code Playgroud)

我也有.env.example:(我认为它没有功能)

      DB_HOST=localhost
      DB_DATABASE=homestead
      DB_USERNAME=homestead
      DB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)

我的数据库中也有create_users_table.phpand >migrations(即使我没有运行任何迁移:make)create_password_resets_table.php


MAMP 正在成功引导和运行服务器,因为它在本地主机上加载项目。


这是我的 MAMP 设置:

并且test创建了数据库(其中包含我之前在其他项目中创建并使用的表,而不是 Laravel。)


尽管对我来说一切似乎都是正确的,但在尝试提交 Auth 表单时,我收到此错误:

Connector.php 第 50 行中的 PDOException:找不到驱动程序

  1. 在 Connector.php 第 50 行

  2. 在 PDO->__construct ('mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=test', 'root', 'root', array('0', '2', '0' , false, false)) 在 Connector.php 第 50 行

  3. at Connector->createConnection('mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=test', array('driver' => 'mysql', 'host' => 'localhost:8889' , 'database' => 'test', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collat​​ion' => 'utf8_unicode_ci', 'unix_socket' = > '/Applications/MAMP/tmp/mysql/mysql.sock', 'prefix' => '', 'strict' => false, 'name' => 'mysql'), array('0', '2' , '0', false, false)) 在 MySqlConnector.php 第 22 行

等等...

ses*_*ith 13

在 mac 或 unix 上,您必须在配置 database.php 文件中包含套接字路径

IE 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

  • 您的回答对我很有帮助,因为我无法使用 mamp 建立从 laravel 项目到 MySQL 的连接,但随后我将“DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock”添加到我的“.env”文件中,然后连接已建立。你的回答给了我这个想法。感谢并投票。 (2认同)

Bri*_*lin 7

这对我来说非常简单,我在 .env 文件中将 :8889 添加到本地主机。

DB_HOST=本地主机:8889

这是因为在 MAMP 首选项中,:8889 是默认端口。


luk*_*uke 6

对我来说最重要的是定义 UNIX 套接字。因为我的机器上有另一个 MYSQL - Laravel 试图连接到该 MYSQL 进程中的数据库。

为要使用的 MAMP 数据库定义 UNIX 非常有效。尝试将其添加到 database.php 中的 MYSQL 配置中

   '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'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
      'charset' => 'utf8mb4',
      'collation' => 'utf8mb4_unicode_ci',
      'prefix' => '',
      'strict' => true,
      'engine' => null,
    ],
Run Code Online (Sandbox Code Playgroud)