使用MS Access作为MySQL数据库后端的前端的问题?

yuk*_*ude 14 mysql database ms-access

两个用户希望共享最初使用MS Access编写的同一数据库,而不会在单个MDB文件上相互冲突.

我使用其Migration Toolkit将表从简单的MS Access数据库移动到MySQL (顺便说一下,它运行良好)并设置Access以通过ODBC链接到这些表.

到目前为止,我遇到了以下问题:

  • 如果没有主键,您不能在表中插入/更新/删除行(这并不奇怪).
  • MS Access中的AutoNumber字段必须是主键,否则它们最终会以MySQL中的整数列结束(natch,为什么它不是PK?)
  • 这些表被迁移到MySQL的InnoDB表类型,但Access关系没有成为MySQL外键约束.

一旦数据库正在使用中,我可以期待任何其他问题吗?特别是当两个用户都在同一张桌子上工作时?

小智 16

我知道这个话题不是太新鲜,只是一些额外的解释:

如果要有效地使用MS Access,尤其是对于较大的多用户数据库,请执行以下操作:

  • 将MDB拆分为前端应用程序和后端(仅限数据)文件 - 然后您将拥有两个单独的MDB文件.

  • 将包含数据和结构的所有表迁移到外部数据库中.它可以是:MySQL(工作得很好,没有数据库大小限制,需要更多技能,因为它不是MS技术,但在许多情况下它是一个不错的选择 - 而且你可以用更多的RAM和额外的CPU来扩展你的后端,所以一切取决于您的需求和硬件能力); Oracle(如果您有足够的资金或某种公司许可证)或Oracle 10g XE(如果这不是问题,数据库大小限制为4 GB,它将始终使用1 GB的RAM和1个CPU), MS SQL Server 2008(在所有情况下都是一对很好的MS Access前端和MS SQL Server后端,但你必须为许可付费! - 优点是:紧密集成,两种技术都是同一个供应商; MS SQL Server很容易保持有效的同时)或Express版本(与Oracle XE一样的故事 - 几乎相同的限制).

  • 使用后端数据库重新链接MS Access前端.如果您为后端选择了MS SQL Server,那么就可以轻松使用MS Access中的向导.对于MySQL - 你必须使用ODBC驱动程序(它很简单,效果很好).对于Oracle - 请不要使用Microsoft的ODBC驱动程序.来自Oracle的这些工作将更好地完成工作(您可以通过Oracle ODBC和MS Oracle ODBC驱动程序比较从MS Access到Oracle执行SQL查询所需的时间).此时,您将拥有可靠的数据库后端和功能齐全的MS Access前端 - MDB文件.

  • 将您的MDB前端编译为MDE - 它将为您提供很多速度.此外,它是向最终用户分发MS Access应用程序的唯一合理形式.

  • 对于日常工作 - 使用带有MS Access前端的MDE文件.对于进一步的MS Access前端开发,请使用MDB文件.

  • 不要使用写得不好的ActiveX组件来增强MS Access前端功能.最好自己写或者购买合适的.

  • 不要相信MS Access存在很多问题的神话 - 这是一个很好的产品,可以帮助可能的情况.问题是很多人认为它是一个玩具或MS Access非常简单.通常他们自己会产生很多错误和问题,而且缺乏知识和经验.要成功使用MS Access,了解此工具非常重要 - 这与任何其他技术无关,这是相同的规则.

我可以告诉你,我正在使用非常先进的MS Access前端到MySQL后端,我非常满意(作为维护此应用程序的开发人员).我的朋友们,用户也很满意,因为他们对GUI(前端),速度(MySQL)感到非常满意,他们对记录锁定或数据库性能没有任何问题.

此外,阅读很多关于良好实践和其他人的经历非常重要.我会说在许多情况下MS Access是一个很好的解决方案.我知道很多专用的定制系统,它们以私有MS Access数据库(MDB文件)的形式开始,然后演变为:拆分MS Access(MDE - 前端,MDB - 后端),最后到:MS Access前端(MDE)和"严肃"的数据库后端(主要是MS SQL Server和MySQL).同样重要的是,您始终可以将MS Access解决方案用作工作原型 - 您已准备好在数据库中使用后端(MySQL - 让我们假设)并且您可以将前端重写为您选择的技术(Web解决方案?可能是桌面C#应用 - 你需要什么!).

我希望我帮助你们中的一些人考虑使用MS Access.

此致,Wawrzyn http://dcserwis.pl


onn*_*odb 15

我有一个同样有效的应用程序:一个MS Access前端到MySQL后端.这是一个巨大的痛苦,我最终写了一个Win32前端.从头顶,我遇到了以下问题:

  • ODBC链接的开发似乎早就停止了.有各种各样的版本浮动 - 非常令人困惑.ODBC链接不支持Unicode/UTF8,我记得它也存在其他问题(尽管可以通过仔细配置来克服一些问题).
  • 您可能希望手动调整数据库模式以使其与MS Access兼容.我看到你已经发现了所需的代理键(即int主键):-)
  • 您应该记住,您可能需要使用传递查询来对MySQL数据库执行更复杂的SQL操作.
  • 小心使用大量的VBA,因为这会破坏你的前端文件.定期压缩数据库(使用主菜单,工具|数据库实用程序|压缩和恢复,或类似的东西---我正在使用荷兰语版本)并进行大量备份是必要的.
  • 访问往往会导致大量网络流量.就像,真的很多.我一直无法找到解决方案.如果您想密切注意,建议使用网络监视器!
  • Access坚持将布尔值存储为0/-1.恕我直言,0/+ 1更有意义,我相信它也是MySQL中默认的做事方式.这不是一个大问题,但如果你的复选框不起作用,你一定要检查一下.

一种可能的替代方法是将后端(带有数据)放在共享驱动器上.我记得这也有很好的记录,也在帮助中.你可能想看看在分裂一些普遍性的建议为前端和后端代码,自动重新连接到启动时的后端 ; 我还可以向您发送更多示例代码,或在此处发布.

否则,您可能还需要考虑MS SQL.我没有这方面的经验,但我认为它与MS Access一起使用得更好!