我在测试脚本中设置了一个PDO连接:
use app\SomeDAO;
class SomeTest extends \PHPUnit_Framework_TestCase
{
protected $db;
public function setUp()
{
$dsn = "mysql:host=localhost;dbname=baseball;user=root;password=root";
$this->db = new PDO($dsn);
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
PDOException:SQLSTATE [HY000] [2002]没有这样的文件或目录.
我如何在这里使用PDO?
在基于Unix(如linux,bsd或OS X)系统中,MySQL localhost是try-to-use-a-socket的密码,除非你通过协议标志强制它不执行此操作(并且没有人这样做)这个).记住localhost通常等于套接字文件.
如果MAMP中的Mysql在非套接字模式下运行,您可以尝试将127.0.0.1通过端口上的TCP连接的主机值替换为本地机器 - 如果它不是,则需要确定它正在运行的端口默认端口.
如果你看一下MAMP启动脚本
less /Applications/MAMP/bin/startMysql.sh
Run Code Online (Sandbox Code Playgroud)
你可以看看它是否以套接字模式开始,如果它有一个如下的配置参数,它正在使用什么文件:
--socket=/Applications/MAMP/tmp/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)
您还可以通过以下问题中的答案来调查可能正在使用的打开套接字mysql:错误:'无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)'
如果您在套接字模式下运行,则需要确保PDO知道套接字文件的路径.一种方法是unix_socket在dsn中指定而不是host:
$dsn = "mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=baseball;user=root;password=root";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4763 次 |
| 最近记录: |