网上有一些主题正在讨论这个问题,但我无法找到问题的任何整洁解释或问题的任何可靠答案。我想要实现的是将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行 中的
在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>
- 醇>
在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行
依旧......
答案 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)
找到我的答案。这是一种解决方法:
答案 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,
],