科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道4.16.3 从一个3.20版本升级到3.21

4.16.3 从一个3.20版本升级到3.21

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

你能用safe_mysqld --old-protocol启动mysqld3.21服务器从3.20分发的客户使用它。

作者:天极软件 来源:天极软件 2008年1月22日

关键字: 升级 版本 MySQL

  • 评论
  • 分享微博
  • 分享邮件

如果你正在运行一个比3.20.28旧的版本并且想要换到3.21.x,你需要做下列事情:

你能用safe_mysqld --old-protocol启动mysqld3.21服务器从3.20分发的客户使用它。在这种情况下,新客户函数mysql_errno()将不返回任何服务器错误,而仅仅是CR_UNKNOWN_ERROR(但是它为客户错误服务)并且服务器使用旧的passwd() 检查而非新的一个。

如果你在而不是mysqld使用--old-protocol选项,你将需要做下列改变:

  • 所有的客户代码必须重新编译。如果你正在使用ODBC,你必须得到新的MyODBC 2.x驱动程序。
  • 脚本scripts/add_long_password必须运行以便变换在mysql.user表中的Password字段为CHAR(16)
  • 所有在mysql.user中的口令必须被重新赋值(为了得到62位而非31位口令)。
  • 表格式没变化,因此你不必须变换任何表。

MySQL3.20.28和以上版本可以处理新的user表格式而不影响客户。如果你有一个比3.20.28早的MySQL版本,如果你变换user表,口令将不再与之工作。因此为了安全,你首先应该升级到至少3.20.28并且然后升级到3.21.x。

新的客户代码可与一个3.20.x 版的mysqld服务器一起工作,因此如果你遇到3.21.x的问题,你可以使用旧的3.20.x服务器而无须重新编译客户。

如果你对mysqld不使用--old-protocol选项,旧的客户将发出错误消息:

ERROR: Protocol mismatch. Server Version = 10 Client Version = 9

新的Perl DBI/DBD接口也支持旧的mysqlperl接口。如果你使用mysqlperl,你必须做的唯一改变是改变到connect()函数的参数。新参数是:hostdatabaseuserpassworduserpassword参数改变了位置)。见20.5.2 DBI接口

下列变化可能影响到旧的应用程序的查询:

  • 现在HAVING必须在任何ORDER BY子句前被指定。
  • LOCATE()参数被交换了。
  • 有一些新的保留字。最著名是DATETIMETIMESTAMP
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章