无法使用 CodeIgniter 连接到 MySQL。可能的 DNS 问题?

Posted

技术标签:

【中文标题】无法使用 CodeIgniter 连接到 MySQL。可能的 DNS 问题?【英文标题】:Can not connect to MySQL with CodeIgniter. Possible DNS issue? 【发布时间】:2012-08-18 07:07:48 【问题描述】:

我正在使用 Codeigniter 运行开发 LAMP。但是,当我尝试加载页面时,数据库无法连接(数据库实际上在另一台服务器上)并且我收到此错误:

A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: core/Loader.php

Line Number: 346

我的 database.php 是这样的:

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'myhost.com';
$db['default']['username'] = 'myusername';
$db['default']['password'] = 'mypassword';
$db['default']['database'] = 'mytable';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

如果我将 'pconnect' 和/或 'db_debug' 更改为 false,我会收到相同的错误,或者它只是不起作用。我知道数据库已启动并正常运行,因为其他人能够连接和使用它。

但是,如果我将主机的 IP 地址放入 database.php 文件中,它就可以工作。 我尝试刷新DNS,甚至更改为谷歌的DNS服务器也无济于事。

一个简单的mysql_connect的结果是:

A PHP Error was encountered

Severity: Warning

Message: mysql_connect(): php_network_getaddresses: getaddrinfo failed: Name or service    not known

Filename: config/database.php

Line Number: 67

A PHP Error was encountered

Severity: Warning

Message: mysql_connect(): [2002] php_network_getaddresses: getaddrinfo failed: Name or     service not known (trying to connect via tcp://myhost.com:3306)

Filename: config/database.php

Line Number: 67

A PHP Error was encountered

Severity: Warning

Message: mysql_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known

Filename: config/database.php

Line Number: 67

Could not connect: php_network_getaddresses: getaddrinfo failed: Name or service not known 

【问题讨论】:

您是否尝试通过创建一个仅包含 mysql_connect 调用的小 PHP 文件来隔离问题? 将 mysql_connect 的结果添加到主要问题中。 另见:***.com/questions/1830830/… 【参考方案1】:

尝试改变这个

$db['default']['db_debug'] = TRUE;

到这里:

$db['default']['db_debug'] = FALSE;

【讨论】:

【参考方案2】:

确保域名注册到正确的IP。地址并且您的主机有这个确切地址的记录。尝试在网站上放置一个静态 html 文件,您所需要的只是显示文本“Hello World”以确保您能够通过域名访问该网站。

确保您已在脚本中正确插入域名,并且您可以使用所需的凭据通过复制和粘贴(没有前导和尾随空格,请注意这一点)登录到 PHPMyAdmin(或您使用的任何东西)。

如果是表名有问题,应该这么说。至于其余的设置,我对其中任何一个都不熟悉,但我在这里概述的内容应该可以让您的数据库正常工作。

祝你好运。

【讨论】:

PHPMyAdmin 正在从 database.php 复制/粘贴凭据。我通过 nslookup 命令收到了主机的确切 IP。 在域名上运行 whois 并查看 I.P.它返回。那可能是你的问题。另外,我假设您只是将错误日志中的域名更改为 myhost.com?如果 I.P.地址检查正确,检查你有正确的端口,并尝试 ftp.myhost.com 我在域名上运行 nslookup 命令并收到一个 IP。如果我用 IP 地址定义主机名,它就可以工作。是的,我将帖子的主机名更改为“myhost.com”。所有使用的端口都是默认的,我试过'ftp.myhost.com'没有效果。最后,感谢您的建议。 好的,首先,它是同一个IP吗?另外,你能不使用主机名吗?如果这是一个实时网站,则值得使用主机名。看来您正在使用PHP?以下代码适用于我: $mysqli = new mysqli($_CONF['db']['host'], $_CONF['db']['user'], $_CONF['db']['pass' ], $_CONF['db']['dflt']);我已经预先定义了这些设置。你试过这个命令吗?

以上是关于无法使用 CodeIgniter 连接到 MySQL。可能的 DNS 问题?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 CodeIgniter 连接到 MySQL。可能的 DNS 问题?

CodeIgniter 3.1.10:无法通过 DSN 使用 ODBC 连接到远程数据库

无法使用 PHP 和 Codeigniter 从 PHP Azure 连接到 SQL Server Azure

无法从 codeigniter 2.1.4 连接到 SQL Server 2012

无法连接到数据库 codeIgniter

Codeigniter 无法连接到数据库