2015-06-19 33 views
0

我有两个不同的服务器上的两个postgresql数据库提交一个字符串的PHP代码。PHP解释PostgreSQL服务器之间的字符串不同

的字符串是:

'£pound €euro' 

PHP服务器版本:

  • PHP 5.4.36-0 + deb7u3
  • 的Debian的Linux 3.2.0-4,AMD64

服务器1版本:

  • 的Debian的Linux 2.6.32-5-amd64的
  • PostgreSQL的:9.1.11

服务器版本2:

  • 的Debian的Linux 2.6.32-5-AMD64
  • Postgresql:9.1.7

服务器编码为是UTF8

的CLIENT_ENCODING也UTF8

的区域设置为两个服务器是相同的也。

下面的代码是用来执行查询:

[email protected]_Connect('host=$myip dbname=$mydb user=$myuser password=$mypassword'); 
$sql = "select * from _myfunction($mystring)"; 
[email protected]_query($oConn, $sql); 

什么我发现情况是,在执行查询时,下面是由服务器1接收:

select * from _myfunction('£pound €euro') 

然而,服务器2对下列正在接收:

select * from _myfunction('£pound �euro') 

是否有人有CL我可以在哪里查找哪些因素导致两台服务器之间收到的查询不同。看到服务器2的查询正在变得怪异,数据库其他部分中的无效字节序列错误引发了一个问题。

我很难过。我能看到的唯一区别是postgresql的次要版本。

回答

0

我猜你的postgree charset在两台服务器上都不一样。请参阅How can i change database encoding for a PostgreSQL database using sql or phpPgAdmin?,它可能会帮助你

+0

感谢您的快速回复。字符集是一样的。它们都是UTF8。 – R3b3cca

+0

你检查过php.ini是否有相同的字符集?请参阅http://stackoverflow.com/questions/9351694/setting-php-default-encoding-to-utf-8 –

+0

在数据库服务器上? php代码在单独的服务器上执行到数据库。 – R3b3cca

相关问题