当前位置: 首页 > 面试题库 >

MySQL PHP不兼容

翟博雅
2023-03-14
问题内容

我在本地运行WAMP,但连接到远程MySQL数据库。PHP的本地版本是最新的5.3.0。

5.0.45版是远程数据库之一,可以正常工作。但是,我尝试连接的另一个远程数据库(版本5.0.22)在死亡之前引发以下错误:

警告:mysql_connect()[function.mysql-connect]:OK包比预期的要短6个字节。PID = 5880 in …

警告:mysql_connect()[function.mysql-connect]:mysqlnd无法使用旧的身份验证连接到MySQL 4.1+。

WTF?

更新:

恢复到PHP 5.2。*,即低于5.3.0的任何版本都可以完全解决问题。只要我没有运行5.3.0,就可以连接到两个数据库。我不确定这种怪异的解释是什么。


问题答案:

您正在使用的MySQL帐户可能具有旧的16个字符长的密码(哈希)。
您可以使用MySQL客户端(例如HeidiSQL,MySQL控制台客户端或任何其他客户端)和有权访问的帐户进行测试mysqluser表。如果密码字段包含16个字符,则它是一个旧密码,并且mysqlnd无法使用它来连接到MySQL服务器。
您可以使用以下方式为该用户设置新密码

SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')

参见dev_mysql_set_password

编辑:
您还应该检查服务器是否默认设置为使用/创建旧密码。

edit2:
请运行查询

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='username'

在5.0.22服务器上(“失败”的服务器)。替换username为您在mysql_connect()中使用的帐户。
那会返回什么?



 类似资料:
  • 问题内容: 我正在编写Java小程序并将其嵌入到网页中。它曾经可以在不同的浏览器中运行Mac和Windows,而不会出现问题。我在Mac上使用NetBeans来构建小程序使用的.jar文件。 由于某种原因,我决定将项目加载到Windows的NetBeans上-从任何浏览器访问网页时,我开始在Windows计算机上收到以下错误: 担心一定是由我决定在Windows上打开项目导致此错误的决定-我试图从

  • 以下一些不兼容的语法功能列表,不完全。 不支持类的定义 函数外作用域不是全局作用域 include/require/eval 执行的代码是引入代码作用域 对变量引用缺乏支持 extract() 函数使用无效 不支持可变变量 不允许使用 $string [n] 的方式获取字符串中的某个字符 双引号字符串中引入变量,但不可引入数组项 不存在的常量不会自动转换为字符串 函数定义中不支持类型约束 标识符不

  • 问题内容: 我正在使用来自AJAX发布请求的回调来导航到新页面,但是在Internet Explorer上不起作用。我的代码如下: 这在FF / Safari / Chrome上正常运行,但是当我在IE上对其进行测试时,它不起作用。是否有更好的方法重定向到新页面?我正在使用,因为如果我不使用回调,则数据不会加载到Chrome / Safari上,因为在请求完成之前页面只会更改。 问题答案: 是括号

  • 我正在使用JPA,列类型为: 我使用PostgreSql作为我的数据库,它支持bpchar类型,现在我尝试为我的测试添加H2,但问题是,当我运行测试时,我得到以下结果: 是否有其他方法可以实现这一目标?

  • 我有一个关于JavaAPI中Akka 2.0.1的问题。我有以下情况: 参与者A:从UI接收请求。然后它将执行以下操作。 等待来自UI的消息 发送msg到Actor B,以检索数据 成为一个演员,当从演员B那里得到答案时,处理它。 演员B: 等待演员A的消息 检索数据 调用; 这不起作用,演员甲也不会得到答案。然而,如果Actor B在系统中使用全局actorRef到Actor A,在我的情况下z

  • 错误:(65,52)java:不兼容类型:推理变量U的边界不兼容等式约束:akka。http。javadsl。模型HttpResponse下限:com。我的演员。聊天演员。聊天信息 下面这行代码显示了错误: 这里是HttpResponse是Akka Http的。 我不知道它在说什么。解决它的方法应该是什么?