如何在MySql 4上方安装的MySql 5上启用inno-db支持?

时间:2020-03-06 14:30:53  来源:igfitidea点击:

如何在已安装的MySql实例上启用inno-db支持?

我已经安装了mysql-5.0.67-win32.
执行"显示引擎"时," InnoDB"为"禁用"。
根据文档,MySql是在支持inno-db的情况下编译的
(来自doc:由于服务器是使用禁用引擎的选项启动的,或者未提供启用引擎所需的所有选项,所以会出现DISABLED值。)

在my.ini中,我用'skip-innodb'注释了一行。这没有帮助。
所有其他与inno-db相关的变量均保持不变。

在经历描述的情况之前,我已经执行了一些不寻常的操作。
我已经安装了mysql-4.0.17-win。我将其卸载,然后安装了mysql-5.0.67-win32.
在安装向导中,我仅选择了MyISAM支持(据我所知,我以这种方式禁用了inno-db支持。当我尝试通过inno-db的支持进行重新安装时,我在使用带有帐户信息的先前数据库" mysql"时遇到了问题) 。

MySQL文档说我应该使用mysqldump导出数据,然后在升级过程中导入导出的数据。我尝试这样做,但是在导入数据时,我获得了有关语法错误的消息(我认为它与mysql的第4和第5版本的某些不兼容性有关)

解决方案

也许我们在全局配置文件中禁用了inno-db。在Linux上,该文件类似于/etc/mysql/my.cnf,也许Windows具有类似的全局conf文件。

默认情况下应启用。在某些情况下,对MySQL lib文件夹的错误权限会导致InnoDB吠叫。检查MySQL错误日志中是否存在权限错误。

我的my.ini中确实包含以下innodb选项。这是一个非常小的配置,因此如果我们希望mysql具有良好的性能,请不要使用此值。请在更改my.ini之后重新启动mysql。

#*** INNODB Specific options ***
innodb_data_home_dir="C:/mysqldata/"
#skip-innodb
innodb_additional_mem_pool_size=120M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=16M
innodb_buffer_pool_size=10M
innodb_log_file_size=2M
innodb_thread_concurrency=8

确保我们更改了正确的my.ini文件。在Windows上,这是从许多位置读取的。顺序是:

  • WINDIR \ my.ini,WINDIR \ my.cnf
  • C:\ my.ini,C:\ my.cnf
  • INSTALLDIR \ my.ini,INSTALLDIR \ my.cnf
  • defaults-extra-file

在命令提示符下键入mysql --help以查看计算机上的实际顺序,例如:

Default options are read from the
  following files in the given order:
  C:\my.ini C:\my.cnf C:\WINDOWS\my.ini
  C:\WINDOWS\my.cnf C:\Program
  Files\MySQL\M ySQL Server 5.0\my.ini
  C:\Program Files\MySQL\MySQL Server
  5.0\my.cnf

我们检查启动参数了吗?也许我们用来启动服务器的shell脚本或者批处理文件在命令行上禁用了引擎。IIRC命令行标志胜过.ini设置。

我已经解决了这个问题。

简而言之:
由于导入数据时出现一些奇怪的语法错误,我无法在MySql4上转储数据库并在MySql5上将其还原。

安装后,我尝试用旧数据库(包括数据库" mysql")覆盖MySql5数据库。可以,但是我无法启用inno-db支持。 (通过这种方式,我什至可以对旧密码使用PASSWORD功能(而不是OLD_PASSWORD))

由于'mysql'的数据库结构在5版本中已更改,因此我尝试再次安装MySql5,并复制了除'mysql'以外的旧数据库。此后,我使用从" mysql"导出的数据的正确版本更新了" mysql"数据库。通过这种方式,我获得了mysql 5的工作能力。

毕竟我也执行了
mysqlcheck-所有数据库-自动修复
升级我的桌子。

P.S.感谢所有答案的作者,这些答案向我暗示了解决问题的正确方法。