1. 程式人生 > >解決django的sqlite3的database is locked

解決django的sqlite3的database is locked

今天在用admin後臺新增一篇部落格,最後居然報錯:DatabaseError at  ... database is locked, 因為我的資料庫使用的是sqlite3,所以不支援大量的訪問是有可能的,但是目前僅僅我一個人訪問的話,居然報錯,我就納悶了,用google搜尋了DatabaseError at  database is locked 和django database is locked,找到的資訊就是說,sqlite3不適合於多執行緒訪問,就是不適合threding訪問。我那些程式原來好好的,就是今天新增部落格文章突然不行了,於是接著搜尋答案。最後找到這麼一篇:

因為內容很短,而且可能有些人訪問不了,乾脆全部貼在下面算了:

Oct 012011

今天玩django,用了django推薦的SQLite,我勒個去,居然在寫入資料庫時,出現了“Database is locked”的錯誤。無奈啊,放狗搜了,這裡這裡這裡,不過嘗試了都解決不了。

結果悲劇的發現,是SQLite的資料庫檔案的許可權不行。。。改成666就OK了。。。

148 views

作者的這幾句話,提醒了我,我馬上登入伺服器檢視許可權,原來我的sqlite3資料庫也是隻有-rw-r--r--許可權,改為666後,就沒有資料庫被鎖定的錯誤了。原來出錯了還要重新整理好幾下或者等待幾分鐘才能訪問,現在不用了。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME':   os.path.join(YOUR_DIR,'data.db'),      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
      'OPTIONS': {
        'timeout': 20,
    }
    }
}

就是在DATABASES中的欄位新增:

      'OPTIONS': {
        'timeout': 20,
    }