<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mathieu Agopian &#187; sqlite</title>
	<atom:link href="http://mathieu.agopian.info/blog/category/sqlite/feed/" rel="self" type="application/rss+xml" />
	<link>http://mathieu.agopian.info/blog</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Tue, 31 Aug 2010 15:48:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Django, sqlite et mod_wsgi, attention au piège!</title>
		<link>http://mathieu.agopian.info/blog/2009/03/django-sqlite-et-mod_wsgi-attention-au-piege/</link>
		<comments>http://mathieu.agopian.info/blog/2009/03/django-sqlite-et-mod_wsgi-attention-au-piege/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 14:34:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[mod_wsgi]]></category>
		<category><![CDATA[sqlite]]></category>

		<guid isPermaLink="false">http://mathieu.agopian.info/blog/?p=111</guid>
		<description><![CDATA[Tout d&#8217;abord, je tiens à préciser que le problème qui suit n&#8217;est pas limité à l&#8217;utilisation de django ou de mod_wsgi. Le contexte Utilisation de SQLite pour un projet django déployé sur mod_wsgi: # settings.py DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = '/opt/mysite/mysite.db' Et voici les permissions sur le système de fichier: -rw-rw-rw- 1 ohan ohan 29696 [...]]]></description>
			<content:encoded><![CDATA[<p>Tout d&#8217;abord, je tiens à préciser que le problème qui suit n&#8217;est pas limité à l&#8217;utilisation de django ou de mod_wsgi.</p>
<h3>Le contexte</h3>
<p>Utilisation de <em>SQLite</em> pour un projet django déployé sur mod_wsgi:</p>
<pre># settings.py
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = '/opt/mysite/mysite.db'</pre>
<p>Et voici les permissions sur le système de fichier:</p>
<pre>-rw-rw-rw- 1 ohan ohan 29696 2009-03-14 13:30 mysite.db</pre>
<p>Tous les répertoires parents sont eux en <em>755</em> (lecture et exécution), ce qui ne devrait donc poser aucun problème, même pour l&#8217;utilisateur utilisé par les processus apache/mod_wsgi.</p>
<h3>Le problème</h3>
<p>Lors de la première tentative d&#8217;accès à la base de donnée (par exemple en accédant à l&#8217;administration django), une erreur <em>500 INTERNAL SERVER ERROR</em> est renvoyée, et dans le fichier de log d&#8217;apache:</p>
<pre>OperationalError: unable to open database file</pre>
<h3>La solution</h3>
<p>Lors de l&#8217;accès à un fichier de base de données, <em>SQLite</em> va créer un fichier journal qui lui servira (entre autres) à gérer les accès à cette base. Plus d&#8217;informations sur la page expliquant les méthodes de vérouillage: <a title="La gestion du lock pour les bases de données sqlite" href="http://www.sqlite.org/lockingv3.html" target="_self">locking in sqlite v3</a>.</p>
<p>Pour créer ce fichier, il faut donc que l&#8217;utilisateur puisse écrire dans le répertoire parent.</p>
<pre>chmod a+rw /opt/mysite</pre>
<p>Ce problème ne devrait se présenter que lors d&#8217;un déploiement en environnement de production pour un projet qui utilise <em>SQLite</em>, ou sur un environnement de test si, comme moi, vous préférez tester sur apache directement, et non sur le <em>runserver.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://mathieu.agopian.info/blog/2009/03/django-sqlite-et-mod_wsgi-attention-au-piege/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
