代码之家  ›  专栏  ›  技术社区  ›  sergtk

如何在安装在MySQL4之上的MySQL5上启用InnoDB支持?

  •  2
  • sergtk  · 技术社区  · 16 年前

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

    我安装了mysql-5.0.67-win32。 执行“show engines”时,“innodb”为“disabled”。 根据文档,mysql是在inno-db的支持下编译的。 (来自文档:由于服务器是用禁用引擎的选项启动的,或者不是给定了启用引擎所需的所有选项,因此会出现一个值disabled。)

    在my.in i中,我用“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版本的一些不兼容有关)

    6 回复  |  直到 16 年前
        1
  •  4
  •   Armin Ronacher    16 年前

    默认情况下应启用。在某些情况下,mysql lib文件夹上的错误权限会导致innodb发出吠声。检查您的MySQL错误日志以查看权限错误。

        2
  •  3
  •   boes    16 年前

    我在my.in i中有以下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
    
        3
  •  1
  •   PiedPiper    16 年前

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

        4
  •  1
  •   daremon    16 年前

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

    1. windir\my.ini,windir\my.cnf
    2. C:\my.ini,C:\my.cnf
    3. installdir\my.ini,installdir\my.cnf
    4. 默认附加文件

    类型 mysql --help 在命令提示符中查看计算机上的实际订单,例如:

    默认选项从 以下文件按给定顺序排列: C:\my.ini C:\my.cnf C:\windows\my.ini C:\Windows\my.cnf C:\程序 文件\m ysql\m ysql server 5.0\my.ini C:\程序文件\mysql\mysql服务器 5μM.CNF

        5
  •  0
  •   paan    16 年前

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

        6
  •  0
  •   sergtk    16 年前

    我已经解决了这个问题。

    简而言之: 由于在导入数据时出现一些奇怪的语法错误,我无法在mysql4上转储数据库并在mysql5上恢复它。

    安装后,我尝试用旧数据库(包括数据库“mysql”)覆盖mysql5数据库。它工作正常,但我无法启用Inno-DB支持。(这样我甚至可以用功能密码来代替旧密码(而不是旧密码))。

    由于“mysql”的数据库结构在5版本中发生了变化,我再次尝试安装mysql5,并复制了除“mysql”之外的旧数据库。在此之后,我用从“mysql”导出的数据的正确版本更新了“mysql”数据库。这样我就得到了mysql 5的工作。

    毕竟我也处决了
    mysqlcheck --all-databases --auto-repair
    升级我的桌子。

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