couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Moss <jonathan.m...@tangentlabs.co.uk>
Subject Re: 412 on update
Date Tue, 21 Oct 2008 16:23:59 GMT
Thanks Bradford,

That allowed me to track down the issue.  It seems that when the PHP 
classes serialize the document in json for saving the _rev is cast to an 
integer. The rev numbers are often larger than the maximum integer value 
PHP supports and it therefore I end up with a -ve number and the 
revisions obviously don't match and I get a 412 - conflict.

I then cast the value to a float which is done elsewhere in the library. 
This still resulted in a 412. So I looked at the raw put data from the 
request and compared it to the raw get data I got in the first place.  
The only difference was the by casting to a float _rev was encoded as:

"_rev":123456789

whereas I received it as:

"_rev":"123456789"

By casting as a string just before json encoding I now get a much 
happier 201 status code during my testing. Should the server really be 
quibbling over the data type? Not a problem if it does but it was a 
difficult one to track down.

Regards,
Jon
> I believe a 412 is a conflict,  anyone care to prove me wrong?
>
>
>
> ----- Original Message ----
> From: Jonathan Moss <jonathan.moss@tangentlabs.co.uk>
> To: couchdb-user@incubator.apache.org
> Sent: Tuesday, October 21, 2008 3:07:43 AM
> Subject: Re: 412 on update
>
>   
>> Hi everyone,
>>
>> I am using the CouchDB PHP library (from 
>> http://couchprojects.googlecode.com/svn/trunk/libraries/php/) to 
>> communicate with the database an I am having some issues updating a 
>> design document. When I try to save the design document I receive a 
>> 412 HTTP status code. The code below is a simplification of what I am 
>> doing but should explain what I am trying to do.
>>
>> $objCouch = new Couch(array("host" => localhost, "port" => 5984));
>> $objDesignDoc = $objCouch->database($strDB)->get("_design/ADesignDoc";
>> $objFunction = new stdClass();
>> $objFunction->map = "function(doc){if(doc.Type = 
>> 'ANode'){emit(doc.Name, doc);}}";
>> $objDesignDoc->views->$strFunc = $objFunction;
>> $objDesignDoc->save();
>> echo "Status: " . $objDesignDoc->lastStatusCode . "\n";
>>
>> What does a 412 status code mean in this context and does anyone have 
>> any idea what I can do to fix it?
>>
>> Regards,
>> Jon
>>     
>
> I should have mentioned I am using version 0.8.1 of CouchDB
>
> Thanks,
> Jon
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
>   


Mime
View raw message