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

时间:2015-07-21 14:24:00

标签: mysql database laravel pdo mamp

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

在我的 config> app.php中:

    protected override ControlCollection CreateControlsInstance()
    {
        ObservableControlCollection controls = new ObservableControlCollection(this);
        controls.ControlAdded += new Action<Control>(controls_ControlAdded);
        return controls;
    }

    void controls_ControlAdded(Control addedControl)
    {
        Debug.WriteLine("Control added:" + addedControl.Name);
    }

    private sealed class ObservableControlCollection : ControlCollection
    {
        public event Action<Control> ControlAdded;

        public ObservableControlCollection(Control owner)
            : base(owner)
        {
        }

        public override void Add(Control control)
        {
            base.Add(control);

            Action<Control> handler = ControlAdded;
            if (handler != null)
            {
                handler(control);
            }
        }

        // Similarly for removing controls:
        public override void Remove(Control value) { ... }
        public override void Clear() { ... }
    }

在我的 .env:

   '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,
    ],

我还有 .env.example: (我相信它没有任何功能)

      DB_HOST=localhost
      DB_DATABASE=test
      DB_USERNAME=root
      DB_PASSWORD=root

我的 数据库&gt;迁移 中也有 DB_HOST=localhost DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret create_users_table.php(即使我没有运行任何迁移:make)

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

这是我的MAMP设置:

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

即使一切看起来都是正确的,但在尝试提交Auth表单时,我收到此错误:

  Connector.php第50行中的

PDOException:   找不到驱动程序

     
      Connector.php第50行 中的
  1.   

  2. 在PDO-&gt; __ construct(&#39; mysql:unix_socket = / Applications / MAMP / tmp / mysql / mysql.sock; dbname = test&#39;,&#39; root&#39;, Connector.php第50行中的&#39; root&#39;,数组(&#39; 0&#39;,&#39; 2&#39;,&#39; 0&#39;,false,false)) / p>

  3.   
  4. 在Connector-&gt; createConnection(&#39; mysql:unix_socket = / Applications / MAMP / tmp / mysql / mysql.sock; dbname = test&#39;,array(&#39; driver&#39) ; =&gt;&#39; mysql&#39;,&#39; host&#39; =&gt;&#39; localhost:8889&#39;,&#39; database&#39; =&gt;&#39;测试&#39;,&#39;用户名&#39; =&gt;&#39; root&#39;,&#39;密码&#39; =&gt;&#39; root&#39;,&#39; charset& #39; =&gt;&#39; utf8&#39;,&#39;整理&#39; =&gt;&#39; utf8_unicode_ci&#39;,&#39; unix_socket&#39; =&gt;&#39; /Applications/MAMP/tmp/mysql/mysql.sock',&#39;前缀&#39; =&gt;&#39;&#39;,&#39; strict&#39; =&gt; false,& #39;姓名&#39; =&gt;&#39; mysql&#39;),数组(&#39; 0&#39;,&#39; 2&#39;,&#39; 0&#39;,false ,false))在MySqlConnector.php第22行

  5.         

    依旧......

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

对我来说这很简单,我在.env文件中添加了8889到localhost。

DB_HOST =本地主机:8889

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

答案 2 :(得分:2)

找到我的答案。这是一种解决方法:

  • 启动MAMP
  • 在左上角,转到&#34; MAMP&#34; - &GT; &#34;设定&#34;
  • 转到&#34; PHP&#34;标签
  • 勾选PHP 5.5.17(或任何你拥有的)而不是默认勾选的那个(5.6.1 - > 5.5.17及其最新版本的MAMP)

答案 3 :(得分:2)

对我来说最重要的是定义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,
    ],