3

我在笔记本电脑上开发了一个小型 WAMP Web 应用程序,其中运行了一个 mySQL 实例,我选择 InnoDB 作为我的数据库引擎。经过几个星期的开发,我想将它提供给公众,发现我的虚拟主机提供的数据库服务器不支持 InnoDB,只支持 MyISAM。

从我笔记本电脑上的 innoDB 模式生成的 create-and-populate 脚本在针对实时数据库执行时,可以设法创建单独的 TABLES,但在创建 VIEW 时遇到问题。MyISAM 不支持视图吗?我知道外键不是。这就是我选择 InnoDB 的原因......我有什么机会让我的 innoDB 模式设计与 myISAM 一起工作?

是否有任何直接的方法可以将整个模式从一个存储引擎转换到另一个?我应该寻找另一个提供支持 innoDB 的 mysql 数据库的网络主机吗?

4

3 回答 3

6

您的选择:

  1. 询问您的网络托管服务提供商是否可以在其服务器上启用 InnoDB(有时他们会为您启用或将您的帐户移动到支持 InnoDB 的服务器)。
  2. 获取具有 InnoDB 支持的新网络托管服务提供商。
  3. 处理 PHP 中的外键依赖关系(例如,您可以使用 Zend_Db 和 Zend_Db_Table 来处理数据库,如果您正确设置它们,这些类可以自动处理外键依赖关系)。
  4. 将您的应用程序转换为 MyISAM 表。

就个人而言,我认为 4 号是最糟糕的解决方案。现在有许多支持 InnoDB 的网络托管服务提供商,因此重新编码大部分应用程序以使用 MyISAM 会浪费您的时间。当然,这取决于应用程序的规模和复杂程度。如果它相对较小,它可能不是那么糟糕的主意。

我可能会寻找一个新的网络托管服务提供商。

于 2010-02-16T16:02:43.547 回答
2

是的,但是 InnoDB 具有许多其他功能,例如事务和行锁定(而不是表锁定)。

于 2010-04-15T22:29:27.367 回答
0

这与 InnoDB 与 MyISAM 无关:两种表类型都支持视图。我认为这要么是版本问题(MySQL Server 5.0 中提供了视图 [...]),要么是关于授权表

如果您发布您收到的确切错误消息,这将有所帮助。

于 2010-02-16T16:09:27.680 回答