我一直在一個內容管理的網站上工作正常本地主機。我剛剛上傳文件到我的mediatemple服務器..並看到一些非常有趣的結果:MySQLi - 服務器返回未知類型246
警告:mysqli_stmt :: bind_result()[mysqli-stmt.bind-result]:服務器返回未知類型246。可能您的客戶端庫與您使用的服務器版本不兼容!
有沒有人曾經見過這樣的事情。我完全難倒了!工作在本地主機(毫安)很大,但現場服務器上休息:-(。
非常感謝!
我一直在一個內容管理的網站上工作正常本地主機。我剛剛上傳文件到我的mediatemple服務器..並看到一些非常有趣的結果:MySQLi - 服務器返回未知類型246
警告:mysqli_stmt :: bind_result()[mysqli-stmt.bind-result]:服務器返回未知類型246。可能您的客戶端庫與您使用的服務器版本不兼容!
有沒有人曾經見過這樣的事情。我完全難倒了!工作在本地主機(毫安)很大,但現場服務器上休息:-(。
非常感謝!
這應該是一個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/...
很明顯,你可能有不同的文件夾名稱,但我希望你的想法
在MySQL 5.0.3,新的字段類型被引入,以支持修復。 ed-point數學更準確。這個新的字段類型在MySQL協議識別與數值246
如果你有一個MySQL服務器運行的5.0.x版本或更高版本,並使用NUMERIC
或DECIMAL
,它與所使用的DECIMAL
字段類型不兼容MySQL 4.x客戶端。
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客戶端庫不支持添加的新
MYSQL_TYPE_NEWDECIMAL
類型值在5.0。無法在服務器端禁用新的DECIMAL
數據類型。您可以通過將應用程序與MySQL 5.0中的客戶端庫重新鏈接來避免此問題。
另見http://bugs.php.net/bug.php?id=35536
您應該能夠在PHP升級MySQL客戶端庫,以解決此問題。要麼重建PHP,要麼只是放入一個新的MySQL客戶端二進制文件。
最重要的是使用更新的mysqlnd庫,它爲您提供了許多性能和功能方面的好處。該庫包含在PHP 5.3及更高版本的源代碼分發中。它在常見問題中聲明它要求 PHP 5.3,這實際上讓我感到驚訝,但這就是他們所說的。
將數據庫中的DECIMAL類型更改爲FLOAT,直到它被支持。