Laravel 5.1 - 连接到 MySQL 数据库 (MAMP)
Posted
技术标签:
【中文标题】Laravel 5.1 - 连接到 MySQL 数据库 (MAMP)【英文标题】:Laravel 5.1 - Connecting to MySQL Database (MAMP) 【发布时间】:2015-10-11 01:40:59 【问题描述】:网上有一些话题在讨论这个问题,但是我找不到任何关于这个问题的简洁解释或任何可靠的答案。我想要实现的是将 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,
],
在我的 .env:
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=root
我也有 .env.example:(我认为它没有功能)
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
我的数据库>迁移中也有create_users_table.php
和create_password_resets_table.php
(即使我没有运行任何迁移:make)
MAMP 在 localhost 上加载项目时成功引导和运行服务器。
这是我的 MAMP 设置:
然后创建了 test
数据库(其中包含我之前在其他项目中创建并使用的表,而不是 Laravel。)
尽管对我来说一切似乎都是正确的,但在尝试提交身份验证表单时,我收到了这个错误:
Connector.php 第 50 行中的 PDOException: 找不到驱动程序
在 Connector.php 第 50 行
在 PDO->__construct ('mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=test', 'root', 'root', array('0', ' 2', '0', false, false)) 在 Connector.php 第 50 行
在 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', 'collation' => '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 行
等等……
【问题讨论】:
您好,您使用的是哪个版本的 MAMP? @dyachenko 嗨,3.0.7.1 【参考方案1】:在 mac 或 unix 上,您必须在配置 database.php 文件中包含套接字路径
即'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
【讨论】:
您的回答对我很有帮助,因为我无法使用 mamp 建立从 laravel 项目到 MySQL 的连接,但随后我将DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
添加到我的 .env
文件并建立了连接。你的回答给了我这个想法。谢谢并投票。
2020:我正在使用 MacOS Mojave,这确实是我建立连接所需要的
@DerkJanSpeelman 不适合我***.com/questions/60865114/…
@twister_void 是的,也许最好在 Docker 中完成所有设置。【参考方案2】:
这对我来说很简单,我在 .env 文件中将 :8889 添加到 localhost。
DB_HOST=localhost:8889
这是因为在 MAMP 首选项中,:8889 是默认端口。
【讨论】:
【参考方案3】:对我来说最重要的是定义 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,
],
【讨论】:
【参考方案4】:就我而言,像许多人建议的那样在 database.php 中进行设置没有任何意义。
因为在开发模式中最需要这种更改。所以设置unix_socket的正确方法如下
文件:.env
DB_SOCKET='/Applications/MAMP/tmp/mysql/mysql.sock'
通过上述方式,.env 已经包含在 .gitignore 中,并且在远程部署您的项目时不会产生任何其他问题。
注意:我已经在 Laravel 5.7 及以上版本中测试过这个设置
【讨论】:
对我来说,它不适用于从本地 laravel 副本进行远程连接。 ***.com/questions/60865114/…【参考方案5】:找到了我的答案。这是一种解决方法:
启动 MAMP 在左上角,转到“MAMP”->“首选项” 转到“PHP”标签 勾选 PHP 5.5.17(或任何您拥有的),而不是默认勾选的那个(5.6.1 -> 5.5.17 和最新版本的 MAMP)【讨论】:
以上是关于Laravel 5.1 - 连接到 MySQL 数据库 (MAMP)的主要内容,如果未能解决你的问题,请参考以下文章
将 Laravel 连接到 XAMPP MySQL (MariaDB) 数据库 SQLSTATE[HY000] [2006] MySQL 服务器已消失
在docker上使用laravel时无法连接到mysql数据库(未找到,pdo,连接被拒绝)