问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

32位系统如何访问64位数据库

发布网友 发布时间:2022-04-07 20:48

我来回答

2个回答

懂视网 时间:2022-04-08 01:10

今天花了一天的时间研究了一下SQLite,以取代一些轻量级项目中使用的Access数据库。原因一方面是想尝试一下这个收到追捧的轻量级文件数据库,另一方面是想使用对象关系映射(ORM),SQLite的支持比Access更好一些。

先做了Demo,做了简单的select操作,不过根据经验,.Net应用程序在部署时总会遇到这个那个的问题,果然部署到服务器上时,出现了一系列的问题。至于SQLite如何使用,不在本文的讨论范围内。

我们本次讨论的是在本机开发和调试全部完成后,部署到服务器上(Windows Server 2008 R2)时的时候出现的问题。

SQLite应用的部署步骤和普通应用是一样的(本应该是如此,否则如何轻便呢?),但可能会遇到一系列的问题,以下问题都是我在部署时亲身经历的问题,测试用服务器是一台全新部署的Windows Server 2008 R2。

 

1、命名空间“System.Data”中不存在类型或命名空间名称“SQLite”(是否缺少程序集引用?)

请检查是否把System.Data.SQLite.dll放到了bin目录下。本机因为添加了SQLite安装目录下的dll引用因此可以正常调试。> SQLite.NET下载页面

2、未能加载文件或程序集“System.Data.SQLite.Linq”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。

以上问题是由于服务器未安装.Net Framework 4.0(或许应用程序池选择了低版本也会出现,未经测试) ,而.Net Framework版本也是比较重要的细节,可以发现在下载SQLite.NET时候,分的比较严格,for .Net Framework 3.5SP1和4.0是分开的,因此必须选用和目标框架版本一致的版本。安装完.Net 4.0后,记得切换IIS中应用程序池的版本。

3、未能加载文件或程序集“System.Data.SQLite.dll”或它的某一个依赖项。找不到指定的模块。

该问题出现的原因是没有安装Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)(当然如果你不是64位系统请安装for x86)。

4、Attempt to write a read-only database

请检查数据库所在目录的权限,加入IIS_IUSRS组的完全控制权限(理论上写入即可)。网上查到说添加Users组,事实上正确的做法是添加IIS_IUSRS组,这个才是IIS工作进程所使用的组,应该与Users是子集的关系,所以使用IIS_IUSRS肯定会更安全一些。

5、未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。

这个问题长的和第3个问题很像,只是离胜利更进一步了。产生这个问题的原因是使用了错误版本的System.Data.SQLite.dll,即在x64的服务器上使用了x86的dll(反之亦然),这个问题倒是有2个解决方法。第一个也是我所推荐的,使用正确版本的dll;第二个方法是在IIS应用程序池的高级设置中,“启用32位应用程序”一项设置为True。可能你再这么做之后,又回到了第三个问题,别担心,x86 Visual C++ Runtime装上了就好了。

注意:如果选择了启用32位应用程序,那么就只能使用32位的dll,一个应用程序池中是不能32位和64位混用的。

6、没有报任何错,但是访问SQLite的速度很慢,哪怕是简单的Select操作。

测试数据是只有2个字段,10条数据的SQLite3数据库。很明显这不是应有的表现,经过一系列的测试和排查,发现该问题是由于目录权限造成的。当你只进行查询之类的只读操作时,是不会报错的。解决方法参照以上第4条即可。
至于产生的原因,看到网上说SQLite在操作时是需要创建临时文件的,可能是权限受限后出现了些许问题了吧。

 

以上6个问题是我部署时遇到的问题,一步步循序渐进,最终赢得了胜利。更加深入的问题后续遇到了继续补充吧。相信很多人都会遇到相同的问题,也相信这篇文章能够解决大部分人的问题。

我也是新人,我的职业也不是程序员,如有不足指出,希望高人指教,谢谢。

IIS64位兼容32位Sqlite设置方法

标签:

热心网友 时间:2022-04-07 22:18

  那程序要兼容32位和64位系统怎么办呢?
  首先想到的办法是判断当前的操作系统,如果是32位就加载32位的sqlite否则加载64位的sqlite。
  但是这个办法过于麻烦,有没有简单一点的方法呢?

  在IDE中,如:VS2008中将项目的目标平台改为x86即可,这时程序即可兼容64位操作系统了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 电脑最小化到右下角的图标消失,怎样恢复出来? 牙龈炎和牙周炎是一回事吗 牙龈炎和牙周炎是一样的吗 牙龈炎和牙周炎的区别在哪里 牙龈炎和牙周炎的区别 认真辨别两者的不同 牙周炎和牙龈炎的区别是什么? 牙龈炎与牙周炎的区别 牙龈炎和牙周炎的区别? 牙龈炎和牙周炎的区别有什么? 牙龈炎和牙周炎的区别 牙龈炎和牙周病都是啥症状 有啥区别 牙龈炎和牙周炎的区别,区别在哪啊 牙龈炎和牙周炎的区别,是什么区别啊 牙龈炎和牙周炎的区别是什么 牙龈炎和牙周炎的区别是什么?要如何进行区分? 打FPS类游戏如何提高反应速度 锻炼大脑反应速度的小游戏? win10企业版周年更新1607好用吗 有哪些适合反应速度慢的玩家的游戏? 玩什么游戏,可以让人提高反应速度 求三阶魔方所有的还原公式 在农村做什么生意赚钱 下乡卖什么最赚钱 3阶魔方全部公式(A左,A右之类的) 瀚钰的寓意 奔跑吧兄弟第七季百度云盘 请问钰彤名字的含义是什么? 跑男7 什么时候上映? 为什么我的Vivo手机里没有深色模式这四个字? vivox9如何开启深色模式? 一般什么地方可以修拉链 VIVOx9什么时候可以开启深色模式啊? 为什么vivox9微信没有深色模式 谁认识这个字念什么?是什么意思! 关于眼睛的简笔画的图片,求大侠帮忙 我想要一张哭泣或者流泪的眼睛图片,要动漫的哦。也不局限于眼睛的图片,人物的也行。 说说全国哪些三类大学的数字媒体技术专业比较好的,别跟我说什么高考考多少分就上好大学! 上海的EA 艺电计算机软件跟美国做手机游戏的EA有什么关系吗?内部怎么样?公司的福利待遇如何? 人脑可以象数码相机那样记录东西么? photoshop 扣图 ipadimovie可以提取音乐吗