我必须将带有 PostgreSQL 数据库的大型 PHP 应用程序迁移到 Rails。这是 OS X Lion Macbook Pro,使用现有的 Apache + PHP 安装。
我通过 Homebrew 安装了 PostgreSQL。假设主机是“localhost”,用户名是“my_username”,默认数据库是“my_db”。密码为空。结果如下:
我可以从命令行很好地访问数据库
psql -h localhost -U my_username -p 5432 my_db
没问题。这也有效:
psql -U my_username my_db
也没有问题。我也可以使用 Rails 访问数据库,非常容易,使用以下设置:
adapter: postgresql
encoding: sql_ascii
template: template0
database: my_db
pool: 5
username: my_username
password:
这一切都很好。但是在 PHP 中,当我这样做时
pg_connect("host=localhost port=5432 dbname=my_db user=my_username") or die(pg_last_error());
我收到这条消息:
LANG_FATAL_ERROR: LANG_DB_COULD_NOT_CONNECT
Access denied for user 'my_username'@'localhost' (using password: YES)
如果我从该行中删除“host=”,则留下:
pg_connect("port=5432 dbname=my_db user=my_username") or die(pg_last_error());
或者
pg_connect("dbname=my_db user=my_username") or die(pg_last_error());
我一无所获。pg_connect 返回false,表示没有连接,但是没有错误!pg_last_error() 什么也不返回。
我还尝试将 password='' 添加到连接字符串,但没有结果。
我非常努力地在 Stack Overflow、Google 等网站上找到有关此问题的任何参考资料,但没有运气。Stack Overflow 上有几个标题相似的问题,但不是这个特定问题。我在网上找到的只是为自己编译 pgsql.so 并确保扩展名列在 php.ini 中。我已经做到了零结果。
显然这不是 PostgreSQL 本身的问题,而是与 PHP 有关的问题。
请帮忙。谢谢。