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 <[EMAIL PROTECTED]>
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

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to