【问题标题】:InnoDB not supported by webhost. What now?虚拟主机不支持 InnoDB。现在怎么办?
【发布时间】:2010-02-16 15:27:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql views innodb web-hosting myisam


    【解决方案1】:

    您的选择:

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

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

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

    【讨论】:

    • 感谢您的选择。我喜欢 1 号。将联系网络主机并询问。如果失败了,我会选择 #2,绝对想避免使用数字 3-4。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这与 InnoDB 与 MyISAM 无关:两种表类型都支持视图。我认为这要么是版本问题(Views [...] are available in MySQL Server 5.0),要么是关于grant tables

      如果您能发布您收到的确切错误消息会有所帮助。

      【讨论】:

      • 没错,视图应该适用于两种表类型,但他也提到了外键。
      • 他的问题并不完全清楚。他在问MyISAM 不支持视图吗?,所以我回答了这个问题。然后他说我知道外键不是。这是否意味着他将架构设计为使用它们,还是他需要它们?
      猜你喜欢
      • 2012-05-29
      • 2015-10-12
      • 2013-11-19
      • 2011-12-24
      • 2012-01-10
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2016-01-20
      相关资源
      最近更新 更多