使用我的 Django 应用程序,我可以很好地从数据库中读取数据。当应用程序没有访问文件的权限时,它给了我这个错误:
尝试写一个只读数据库
这是有道理的。所以我编辑了文件的权限,让Apache进程有写权限。但是,我收到了这个神秘的错误,而不是能够写入:
无法打开数据库文件
如果它有用,这里是整个输出:
Request Method: POST
Request URL: http://home-sv-1/hellodjango1/polls/1/vote/
Exception Type: OperationalError
Exception Value:
unable to open database file
Exception Location: /usr/lib/pymodules/python2.5/django/db/backends/sqlite3/base.py in execute, line 193
Python Executable: /usr/bin/python
Python Version: 2.5.2
Python Path: ['/var/www', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/pymodules/python2.5', '/usr/lib/pymodules/python2.5/gtk-2.0']
Server time: Sun, 23 Aug 2009 07:06:08 -0500
Run Code Online (Sandbox Code Playgroud)
如果需要堆栈跟踪,请告诉我。
由于各种原因,我有一些 sqlite version3 db3 文件,我从实时运行的生产系统(我知道坏 sysadmin 坏 sysadmin)复制。是否有一些我可以运行的 sqlite 命令来验证所有数据都可以从这些文件中读出(我不介意是否需要一段时间)。
我正在考虑修改一些 perl,它会转储所有数据,然后将其重新导入到新文件中。我认为如果遇到损坏的数据,sqlite 会抛出异常。有没有更好的办法?
我是 CentOS 5.3 和 sqlite-3.3.6-2
要在我的Windows /Apache/PHP 设置上启用SQLite,我取消注释php.ini文件中的以下几行并重新启动 Apache:
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
Run Code Online (Sandbox Code Playgroud)
现在我有一个带有Suse Linux 10.3的VPS,并且自动设置了Apache/PHP。查看php.ini文件以进行上述更改,我发现 Linux 上的情况有些不同:
extension_dir = /usr/lib/php5/extensions”,但在这个目录中只找到:
如何在此 Linux 环境中启用 SQLite?
谁能帮我将 MS Access ( .mdb) 文件转换为 Sqlite 数据库 ( .db) 文件?
我需要转换所有表并将数据转储到里面。
是否有任何可用的工具,或者是否有将 .mdb 转换为 .db 的 API?
我已经知道 SQLite 很长时间了,我知道它非常快,但我从未在生产服务器中尝试过。在失败之前,我一直无法准确估计它可以处理多少流量。
有没有人有这方面的数字或文章?
我想将 SQLite 服务器与 SQL Server 2008 服务器“链接”。例如使用sp_addlinkedserver命令。我该怎么做呢?
我已经进行了广泛的搜索,但没有找到解决此问题的方法。我发现的最接近的尝试是在这里:
http://www.sqlservercentral.com/Forums/Topic866972-149-1.aspx
--#################################################################################################
--Linked server Syntax for SQLite
--using OLE provider C:\Program Files\Cherry City Software\SQLiteProvider\SQLitePV.dll
--from http://cherrycitysoftware.com/ccs/Download/Download.aspx
--#################################################################################################
DECLARE @server sysname,
@srvproduct nvarchar(256),
@provider nvarchar(256),
@datasrc nvarchar(100),
@location nvarchar(100),
@provstr nvarchar(100),
@catalog sysname,
@sql varchar(1000)
--add an SQLite Database as a linked server
SET @server = N'mySQLite'
SET @srvproduct = N'SQLite Provider'
SET @provider = N'OleSQLite.SQLiteSource.1'
SET @datasrc = N'C:\Data\LowellSSC.db3'
set @provstr = ''
EXEC sp_addlinkedserver @server,@srvproduct,@provider,@datasrc,NULL,@provstr
exec sp_addlinkedsrvlogin @rmtsrvname='mySQLite',
@useself …Run Code Online (Sandbox Code Playgroud) windows-server-2008 database sqlite sql-server sql-server-2008
我正在尝试在Centos 6.7下安装最新版本的 sqlite ( > 3.7.5 ) 。
所以当我启动install命令时:
yum install sqlite
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
包 sqlite-3.6.20-1.el6_7.2.x86_64 已经安装并且是最新版本
没什么可做的
问题:如何在Centos6.7 中安装最新版本的sqlite?
谢谢。
对于上下文:我需要能够可靠地更新某些 sqlite DB 文件的时间戳,这些文件在 ext4 文件系统上间歇性更新。
touch写入数据库时使用命令(更新最后修改时间)是否会失败,甚至更糟,导致数据丢失?
我经常使用 SQLite 在公司中创建简单的程序。数据库放置在文件服务器上。只要不超过大约 50 个用户同时处理数据库(尽管取决于它是读取还是写入),这就可以正常工作。一旦超过这个数量,如果服务器上有大量并发写入,他们会注意到速度变慢,因为大量时间花在锁上,并且没有像缓存这样的东西,因为没有数据库服务器。
不需要数据库服务器的优点是设置公司 Wiki 或类似内容的时间可以从几个月减少到几天。通常需要几个月的时间,因为一些 IT 部门需要订购服务器,它需要符合公司政策和安全规则,并且需要放置在外包服务器托管设施上,这会搞砸并将其放置在错误的位置等等等等
因此,我想到了创建分布式数据库服务器的想法。过程如下:公司计算机上的用户在 Wiki 页面(使用此数据库作为其后端)上编辑某些内容,为此他读取本地硬盘上的文件,该文件说明最后一台台式计算机的 IP 地址成为数据库服务器。然后,他尝试通过 TCP/IP 直接联系这台计算机。如果它没有回答,那么他将读取文件服务器上的一个文件,指出最后一台台式计算机的 IP 地址作为数据库服务器。如果这台服务器也没有回答,他自己的台式机将成为数据库服务器,并在同一个文件中注册它的 ip 地址。然后就可以执行SQL更新语句,其他台式电脑就可以直接连接到他的了。
这种架构的要点在于,负载越高,它的功能就越好,因为每台台式计算机总是知道数据库服务器的 IP 地址。此外,使用此设置,我相信放置在文件服务器上的数据库可以为数百台台式计算机提供服务,而不是目前的 50 台左右。我也不相信已经成为数据库服务器的单台台式计算机的负载会很明显,因为在这个桌面上不会有硬盘操作,只有文件服务器上。
这个想法可行吗?它已经存在了吗?什么样的数据库可以支持这样的架构?
编辑:我应该指出,这个想法并不漂亮、稳定、最佳实践,或者我真正引以为豪的东西。我仍然对可行性感兴趣的原因是我的一些客户是银行,而访问数据库所涉及的官僚主义是巨大的。此类项目的项目发起人通常需要高于副总裁级别,因为他们对访问服务器的极端安全问题感到担忧。不用说,这意味着建立 Wiki 需要做很多工作。以后如果 Wiki 证明是成功的,当然应该将其迁移到适当的数据库服务器上。
Edit2:这个想法的原因是为了降低在将数据库放在文件服务器上时使用SQLite时发生Writer Starvation的风险。此问题在此处的第 5.1 节中进行了描述。利用台式计算机缓存最常访问的信息(即 Wiki 页面),意味着文件服务器上的工作负载将大大减少。这应该再次改善用户体验。你真的认为我对这个想法还很遥远吗?
我想构建一个基于 GlusterFS 的分布式存储和自动文件复制 (AFR) 以容错方式存储用户文件。
但我也想从多个客户端访问存储在 GlusterFS 卷上的 SQLite3 数据库(因此在多个服务器上复制)。是否可以?几个客户端之间的并发是否会得到很好的处理,不会导致腐败?
或者有没有更好的 GlusterFS 替代方案来分发 SQLite3 数据库?
sqlite ×10
database ×3
linux ×3
centos6 ×1
deployment ×1
django ×1
ext4 ×1
file-server ×1
installation ×1
php ×1
php.ini ×1
sql ×1
sql-server ×1
yum ×1