2012-11-09 41 views
0

我剛開始使用MongoDB。我可以插入在終端新記錄與像蒙戈命令:MongoDb插入錯誤(php) - BSON doc是X字節,最大爲0

db.test.insert({var: 'data' }) . 

,我可以用PHP獲得這些記錄,如:

Array 
(
    [0] => Array 
     (
      [_id] => MongoId Object 
       (
        [$id] => 509d0a4ae6c4d3ca0ba30572 
       ) 

      [deneme] => 1 
     ) 

    [1] => Array 
     (
      [_id] => MongoId Object 
       (
        [$id] => 509d09e2a3047c588723f9bf 
       ) 

      [deneme] => 
      [name] => aa 
     ) 

) 

但我不能像PHP插入記錄:

$m->insert(array(
'url' => 'http://www.query7.com', 
'software' => 'wordpress', 
'tutorials' => array('php','javascript','web development'), 
)); 

我得到這個錯誤: 致命錯誤:未捕獲異常'MongoException'消息'BSON文檔的大小爲145字節,最大爲0'

我已經測試過不同的php類,但我總是得到相同的錯誤。什麼是「BSON doc的大小」?

謝謝

+0

你插入之前,選擇一個數據庫,並收集後消失? – Petrogad

+0

yes, $ m-> setDatabase(「test」); \t $ m-> setCollection(「test」); \t \t \t $間 - >刀片(陣列( \t 'URL'=> 'http://www.query7.com', \t '軟件'=> '的wordpress', \t '教程'= > array('php','javascript','web development'), \t)); – Musher

+0

您正在嘗試保存大於MongoDB可保存的文檔。 – GBD

回答

1

我不認爲你可以使用所有的$ m變量;嘗試做一些像PHP文檔建議:

$m = new Mongo(); 
$db = $m->selectDB('test'); 
$collection = new MongoCollection($db, 'phpmanual'); 

$collection->insert(array(
    'url' => 'http://www.query7.com', 
    'software' => 'wordpress', 
    'tutorials' => array('php','javascript','web development'), 
)); 

PHP Docs about Mongo

確保你在最新的MongoDB版本,可以發現here

+0

我已經嘗試過這個和同樣的錯誤:致命錯誤:在/home/hergul/www/democratusmessage/index.php中未捕獲的異常'MongoException'帶有消息'BSON doc的大小爲145字節,最大值爲0' 13堆棧跟蹤:#0 /home/hergul/www/democratusmessage/index.php(13):MongoCollection-> insert(Array)#1 {main}在線/Home/hergul/www/democratusmessage/index.php在線13 – Musher

+0

@MustafaHergül您正在使用哪種版本的mongo? – Petrogad

+0

版本 - 1.6.3 – Musher

1

這通常在發生或者:

  • 您的MongoDB的下載不好,在這種情況下,我會從MongoDB站點下載最新版本:http://www.mongodb.org/downloads
  • 或者將最新的PHP驅動程序與這樣一箇舊版本混合使用。

自從MongoDB v1.6開始,PHP驅動程序發生了一次突破性變化,但它只關心PHP連接到MongoDB的方式和其他一些事情。它不應該影響您是否可以查詢舊版本的MongoDB。

所以有很高的機會,這不是問題,但我不會排除。

無論哪種方式,我會:從Ubuntu的7.11

  • 升級,它不再是忠實地編程和維持,至12.04
  • 升級到最新的MongoDB
  • 升級你的PHP版本以及

它可能只是所有這些的混合物。

+0

我更新mongodb到2.0 .7,它的工作原理。謝謝... – Musher

+0

是的 - 我剛剛安裝了一個全新的Debian 6(Squeeze),使用php5-cli(v5.3.3-7)和默認的Debian mongoDB(它只是1.4.4 * *)。好消息是你可以添加一個外部回購(10gen),而不是從源代碼編譯:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian/ - 這給了我Mongo ** v2 2.2 **。如果你正在設置一臺新機器,你也應該安裝一個64位版本的操作系統,因爲Mongo數據庫只能在32位以下2GB)。這就是爲什麼我今天重新安裝它... –

+0

從MongoDB站點的默認下載:http://www.mongodb.org/downloads來作爲一個可執行的二進制文件。它不是deb打包的,而是將deb包的內容放入一個文件夾中的,只需編寫一個服務腳本,它就像從repos安裝一樣。 – Sammaye

0

我已經做了一些研究,看起來您使用的MongoDB版本在調用db.isMaster()函數時不提供maxBsonObjectSize(請參閱here)。

,這可能是你正在使用訪問的MongoDB數據庫中的PHP驅動程序發生衝突,因爲他們試圖從連接對象的最大尺寸(見線604 here):

if (FAILURE == php_mongo_write_insert(&buf, Z_STRVAL_P(c->ns), a, connection->max_bson_size TSRMLS_CC)) { 

您應該更新你的MongoDB數據庫或嘗試找到一個與你正在使用的數據庫版本兼容的PHP驅動程序。

相關問題