我相信我已成功将我的(非常基本的)站点部署到fortrabbit,但是一旦我连接到SSH运行一些命令(例如php artisan migrate或php artisan db:seed),我收到一条错误消息:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
在某些时候,迁移必须有效,因为我的桌子在那里 - 但这并不能解释为什么它现在不适合我.
我正在尝试设置WordPress.我运行Apache和MySQL,帐户和数据库都已设置完毕.我试图建立一个简单的连接:
<?php
    $conn = mysql_connect('localhost', 'USER', 'PASSWORD');
    if(!$conn) {
        echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
    }
?>
我总是得到这个:
错误:2002 - 没有这样的文件或目录
它可以谈论什么文件或目录?
我使用的是内置Apache的OS X Snow Leopard.我使用x86_64 dmg安装了MySQL.
更新:我发现套接字位于/tmp/mysql.sock,所以在php.ini中,我用它替换了所有错误路径.
我开始用德语中的"Zend Framework in Action"一书学习Zend Framework.
就在那里它开始变得有趣我的PHP单元测试抛出此错误:"Zend_Db_Adapter_Exception:SQLSTATE [HY000] [2002]没有这样的文件或目录"
我无法在谷歌找到任何提示.我做了书中的所有事情.任何人都可以给我一个提示在哪里搜索我的错?
这是一个常见的初学者错误吗?
php artisan migrate,出现以下错误:
[PDOException]                                    
SQLSTATE[HY000] [2002] No such file or directory 
注意:php -v是5.5,mysql -v是终端的5.5这是我的config/database.php的一部分
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'essays',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
我尝试用127.0.0.1替换localhost但没有用.请帮忙..
编辑: 我在php.ini中添加了这三行
mysql.default_socket = /var/run/mysqld/mysqld.sock
mysqli.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock
我还添加了这个符号链接:
sudo mkdir /var/mysql
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
但那并没有解决.我也是从混帐拉一个全新的laravel项目后遇到同样的错误composer install,然后php artisan migrate
 [PDOException]                                    
  SQLSTATE[HY000] [2002] No such file …今天,我删除并重新安装了最新版本的lampp,以便转移到PHP 5.30,突然一个非常简单的应用程序无法连接到mysql数据库.我正在使用PDO进行连接,并收到以下错误:
Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect 
via unix://) in /home/raistlin/www/todoapp/home.php on line 9
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
Invalid argument' in /home/raistlin/www/todoapp/home.php:9 Stack trace: #0
/home/raistlin/www/todoapp/home.php(9): PDO->__construct('mysql:host=loca...', 'USER', 
'PASSWORD') #1 {main} thrown in /home/raistlin/www/todoapp/home.php on line 9
为了调试它,我现在没有捕获错误.
以下代码足以在我的系统上复制问题:
<?php
$DBACCESS = array(
    "connstring"=>"mysql:host=localhost;dbname=todoapp",
    "host"=>"localhost",
    "user"=>"user",
    "password"=>"password",
    "todoapp"=>"todoapp"
    );
    echo implode('<br \>',$DBACCESS);
    $dbh = new PDO($DBACCESS['connstring'],$DBACCESS['user'],$DBACCESS['password']);
    $dbh = null;
?>
在网上看,我发现有一两个人有同样的问题,但没有一个人收到过回复,更不用说工作了.有谁知道发生了什么?我在配置中遗漏了什么?我需要做些什么来解决它?
我试图在OS X上运行一个laravel项目.我用自制软件安装了MySql.我试着谷歌搜索为什么我收到这个错误:
SQLSTATE[HY000] [2002] No such file or directory
当我尝试做的时候
php artisan migrate
我看到的大多数答案都说php和MySql无法相互通信.我一直试图看看我哪里出错,因为我认为我之前关于它的帖子,它仍然无效.我创建了一个只执行此操作的页面:
<?php
    phpinfo();
?>
我看到这些类型的东西:在配置区域,我看到:
'--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--enable-pcntl' '--enable-zend-signals' '--enable-dtrace'
加载配置文件:
/usr/local/etc/php/5.4/php.ini
如果我ls /tmp,我确实看到mysql.sock.  
在那个php.ini文件中,我设置了这些行:pdo_mysql.default_socket =/tmp/mysql.sock mysql.default_socket = /tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock
然后在/usr/local/Cellar/mysql/5.6.16/my.cnf中,我添加了以下行:
socket = /tmp/mysql.sock
我DID重启apache,以及检查mysql是否正在运行.除了php和mysql连接之外,我还没有看到任何其他建议.我认为我的系统上有两个版本的php,因为当我安装mcrypt或其他我不记得的东西时,它安装了另一个php版本.但是当我查看phpinfo的输出时,我正在编辑相应的php.ini文件.我不知道是否还有另一件我遗失的文章.有什么想法吗?谢谢
我migrations从一个名为Laravel 5.4的数据库中删除了该表laravel.当我跑php artisan migrate:install,我得到这个错误:
[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from 
information_schema.tables where table_schema = laravel 
and table_name = migrations)
我删除并重新创建了数据库.我也跑了composer update.没运气.我可以在phpMyAdmin中运行该命令并手动创建表.
我之前遇到的问题是我的C应用程序在/tmp/mysql.sock中查找套接字,但我的套接字位置已设置为/var/run/mysqld.sock.我现在更改my.cnf中的设置以始终将套接字放入/ tmp.
现在,当我尝试使用nginx和php5-fpm运行我的Web应用程序时,它找不到套接字,因为它仍然在/var/run/mysqld.sock中查找.起初我创建了一个链接但后来注意到,每当我重新启动机器时,此链接都会被删除.
我搜索了我的php.ini并将所有三个(pdo_mysql.default_socket,mysql.default_socket,mysqli.default_socket)可用套接字选项设置为/tmp/mysql.sock.我在文件夹cgi,cli和fpm中这样做了.但是,它仍然无效.我还需要添加其他选项吗?或者我应该重新考虑我的做法?
继承人我的php.ini:
   [PHP]
    engine = On
    short_open_tag = On
    asp_tags = Off
    precision = 14
    y2k_compliance = On
    output_buffering = 4096
    zlib.output_compression = Off
    implicit_flush = Off
    unserialize_callback_func =
    serialize_precision = 100
    allow_call_time_pass_reference = Off
    s    afe_mode = Off
    safe_mode_gid = Off
    safe_mode_include_dir =
    safe_mode_exec_dir =
    safe_mode_allowed_env_vars = PHP_
    safe_mode_protected_env_vars = LD_LIBRARY_PATH
    disable_functions =
    disable_classes =
    expose_php = On
    max_execution_time = 30
    max_input_time = 60
    memory_limit = 128M
    error_reporting = E_ALL & ~E_DEPRECATED
    display_errors = Off
    display_startup_errors …php ×6
mysql ×5
laravel ×3
pdo ×2
artisan ×1
connection ×1
lampp ×1
laravel-5.4 ×1
mmap ×1
sockets ×1