我一直在开发一个在localhost上工作正常的内容管理网站。我刚刚将文件上传到我的mediatemple服务器..我看到了一些非常有趣的结果:
警告:mysqli_stmt :: bind_result()[mysqli-stmt.bind-result]:服务器返回未知类型246.可能您的客户端库与您使用的服务器版本不兼容!
之前有没有人见过这样的事情。我完全难过了!在localhost(MAMP)上工作得很好,但在实时服务器上中断: - (。
非常感谢!
答案 0 :(得分:1)
在MySQL 5.0.3中,引入了一种新的字段类型,以更准确地支持定点数学运算。这个新的字段类型在MySQL协议中用数值246标识。
如果您的MySQL服务器运行5.0.x或更高版本,而您使用的是NUMERIC
或DECIMAL
,则它与MySQL 4.x中使用的DECIMAL
字段类型不兼容客户端。
http://dev.mysql.com/doc/refman/5.0/en/upgrading-from-previous-series.html说:
由于MySQL 5.0服务器具有
DECIMAL
数据类型的新实现,如果服务器由仍与MySQL 4.1客户端库链接的旧客户端使用,则可能会出现问题。如果客户端使用二进制客户端/服务器协议来执行生成包含数值的结果集的预准备语句,则会引发错误:'Using unsupported buffer type: 246'
发生此错误是因为4.1客户端库不支持5.0中添加的新
MYSQL_TYPE_NEWDECIMAL
类型值。无法在服务器端禁用新的DECIMAL
数据类型。您可以通过使用MySQL 5.0中的客户端库重新链接应用程序来避免此问题。
另见http://bugs.php.net/bug.php?id=35536
您应该可以通过在PHP中升级MySQL客户端库来解决此问题。要么重建PHP,要么只是放入一个新的MySQL客户端二进制文件。
最重要的是使用较新的 mysqlnd 库,这会为您带来很多性能和功能方面的好处。该库包含在PHP 5.3及更高版本的源代码发行版中。它在FAQ中说明它需要 PHP 5.3,这实际上让我感到惊讶,但这就是他们所说的。
答案 1 :(得分:1)
将数据库中的DECIMAL类型更改为FLOAT,直到支持它为止。
答案 2 :(得分:0)
应该是MySQL版本问题。
这是我在另一个论坛中发现的:
apt-get source php5-mysqli
cd php5-...
./configure --with-mysqli=/usr/bin/mysql_config --without-mysql
make
cp ext/mysqli/modules/mysqli.so /usr/lib/php5/...
显然你可能有不同的文件夹名称,但我希望你明白这个想法。