当我尝试在实时服务器上访问我的项目时,出现错误mysqli::real_connect(): (HY000/2002): No such file or directory。
当我尝试在实时服务器上访问我的项目时,出现错误mysqli::real_connect(): (HY000/2002): No such file or directory。
我将我的网站上传到服务器后尝试访问,但是CodeIgniter返回了一个我找不到答案的错误。为什么会发生这种情况?我的数据库配置如下:
$db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'netservice', 'password' => '*********', 'database' => 'valedastrutas', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => FALSE, 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE, );
当我尝试访问我在生产服务器上的项目时,出现了"Getting error mysqli::real_connect(): (HY000/2002): No such file or directory"错误。这个错误出现的原因是MySQL连接驱动在本地主机的位置上找不到任何有意义的服务器。所以,我们应该使用'hostname' => '127.0.0.1'
而不是'hostname' => 'localhost'
。
为什么会发生这种情况呢?很奇怪,没有人会考虑到这个问题。"localhost"指的是一个名称或相同的名称,它指向IP地址127.0.0.1。这个IP地址(127.0.0.1)应该存在于任何能够连接到互联网的计算机上,也就是有局域网连接的计算机。"localhost"指的是本地机器本身。以127.x.x.x开头的任何IP地址都指向本地机器。一些编译器无法解析localhost.yourdomain.com,因为"localhost"和localhost.yourdomain.com并不相同。这就是为什么它可能会引起问题的原因。
这种情况发生是因为指定'localhost'会通过MySQL套接字而不是TCP打开连接,而错误信息告诉你套接字文件找不到。
解决这个问题的方法是将主机名改为'127.0.0.1',以便使用TCP连接而不是套接字连接。这样就能够成功访问生产服务器上的项目了。