今天在用admin后台添加一篇博客,最后居然报错:DatabaseError at ... database is locked, 因为我的数据库使用的是sqlite3,所以不支持大量的访问是有可能的,但是目前仅仅我一个人访问的话,居然报错,我就纳闷了,用google搜索了DatabaseError at database is locked 和django database is locked,找到的信息就是说,sqlite3不适合于多线程访问,就是不适合threding访问。我那些程序原来好好的,就是今天添加博客文章突然不行了,于是接着搜索答案。最后找到这么一篇:
http://www.cse.msu.edu/~wangyua6/blog/?p=1516 [django]SQLite database is locked 解决办法
因为内容很短,而且可能有些人访问不了,干脆全部贴在下面算了:
Oct
01
2011
148 views
作者的这几句话,提醒了我,我马上登录服务器查看权限,原来我的sqlite3数据库也是只有-rw-r--r--权限,改为666后,就没有数据库被锁定的错误了。原来出错了还要刷新好几下或者等待几分钟才能访问,现在不用了。
https://code.djangoproject.com/ticket/9409
或者按照 https://docs.djangoproject.com/en/dev/ref/databases/#database-is-locked-errors 试试
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, }