如何在MySql 4上方安装的MySql 5上启用inno-db支持?
如何在已安装的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.感谢所有答案的作者,这些答案向我暗示了解决问题的正确方法。