couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bradford Winfrey <bradswinf...@yahoo.com>
Subject Re: 412 on update
Date Tue, 21 Oct 2008 16:35:18 GMT
Hmm, I wonder if there is a test that accounts for that (it being an int rather than a string).
 If not, then I'm sure there is a good reason for it, maybe they allow alpha characters in
the rev?

Anyway, glad it helped out :)

Brad



----- Original Message ----
From: Jonathan Moss <jonathan.moss@tangentlabs.co.uk>
To: couchdb-user@incubator.apache.org
Sent: Tuesday, October 21, 2008 11:23:59 AM
Subject: Re: 412 on update

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 
>  

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message