我正在使用000webhost.com,我在那里使用phpMyAdmin。当我运行我的PHP脚本时,我从MySQL收到此错误,如标题所示:
mysql.proc的列数是错误的。预计20,发现16。
该表可能已损坏。
有没有解决方案?
<?php
$username="usrname";
$password="passwd";
$database="a1xxxxx_mydb";
$host="mysqlxx.000webhost.com";
mysql_connect($host,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
if (isset($_GET["userLatitude"]) && isset($_GET["userLongitude"])) {
$userLatitude=$_GET['userLatitude'];
$userLongitude=$_GET['userLongitude'];
$result = mysql_query("SELECT locationName, ( 6371 * acos( cos( radians(floatval( $userLatitude) )) * cos( radians( locationLatitude ) ) * cos( radians( locationLongitude ) - radians( floatval($userLatitude)) ) + sin( radians(floatval($userLongitude)) ) * sin( radians( locationLatitude) ) ) ) AS distance
FROM Location HAVING distance < 2 ORDER BY distance LIMIT 0 ,20") or die(mysql_error());
echo $result;
// check for empty result
if (mysql_num_rows($result) > 0) {
// looping through all results
// products node
$response["Location"] = array();
while ($row = mysql_fetch_array($result)) {
// temp user array
$product = array();
$product["locationName"] = $row["locationName"];
$product["locationInfo"] = $row["locationInfo"];
$product["locationLatitude"] = $row["locationLatitude"];
$product["locationLongitude"] = $row["locationLongitude"];
$product["locationPic"] = $row["locationPic"];
$product["city"] = $row["city"];
// push single product into final response array
array_push($response["Location"], $product);
}
// success
$response["success"] = 1;
// echoing JSON response
echo json_encode($response);
} else {
// no products found
$response["success"] = 0;
$response["message"] = "No products found";
// echo no users JSON
echo json_encode($response);
}
}
else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
mysql_close();
?>
答案 0 :(得分:49)
我也有这个错误。我通过运行
来修复它mysql_upgrade -u root -p
此外,通过运行
重启mysql服务service mysqld restart
答案 1 :(得分:12)
升级错误时会发生此错误。例如,如果从5.0升级到5.1但不运行mysql_upgrade脚本,则会发生这种情况;或者,在极少数情况下,如果直接从5.0升级到5.5,可能会发生这种情况。 (许多人这样做,但这种更新不是官方支持的) 你说你正在使用托管服务 - 我认为你应该创建一张票并告诉他们这个问题。如果您没有SUPER权限,则无法执行任何操作。 但如果你有这个权利,只需运行mysql_upgrade: http://dev.mysql.com/doc/refman/5.1/en/mysql-upgrade.html
答案 2 :(得分:4)
在MacOS Mohave中将XAMPP从xampp-osx-7.2.10更新到7.3.9时,我遇到了同样的问题。因此解决方案是:
在“ MacintoshHD▸应用程序▸XAMPP▸xamppfiles▸bin”中找到文件mysql_upgrade,然后双击它。
答案 3 :(得分:4)
在Ubuntu 18.04上安装XAMPP 7.4.8后,MySQL Workbench 8.0.21中出现了类似的错误。使用phpMyAdmin没问题。
Error Code: 1558 Column count of mysql.proc is wrong. Expected 21, found 20. Created with MariaDB 100108, now running 100413. Please use mysql_upgrade to fix this error
解决方案:
sudo /opt/lampp/lampp start
/opt/lampp/bin/mysql_upgrade
问题解决了
积分:XAMPP中似乎有一个错误-https://community.apachefriends.org/f/viewtopic.php?f=17&t=78386&sid=3d3824dd0b6aa2e33c3adc73c744b4b4
答案 4 :(得分:1)
虽然您对升级的必要性可能是正确的,但这不是发生此错误的唯一原因。
使用返回1行的查询调用以下内容时
my $rv = $sth_indexq->fetchall_arrayref;
报告了以下错误:
DBD::mysql::st execute failed: Column count of mysql.proc is wrong. Expected 20, found 16. Created with MySQL 50520, now running 50528. Please use mysql_upgrade to fix this error. at
...
然而,错误的真正原因是使用fetchall_arrayref而不是fetchrow_arrayref。以下工作没有错误:
my $rv = $sth_indexq->fetchrow_arrayref;
$ rv 中的数据仅 1级深度,而不是2 。
mysql_upgrade解决方案可以很好地解决这个问题,但简单的解决方案是了解您的数据并使用正确的检索代码。
J.White
答案 5 :(得分:1)
当我在Debian 8(jessie)中将mysql服务器从5.5更新到5.7时,我遇到了同样的问题。在我的情况下,当我执行follow命令时它工作正常:
mysql_upgrade --force -uroot -p
希望它能帮到你
答案 6 :(得分:1)
我在Ubuntu 20.04上使用xampp,使用以下解决方案解决了返回相同消息错误的问题:
积分:https://askubuntu.com/questions/1171409/how-to-run-mysql-upgrade-when-using-xampp
答案 7 :(得分:1)
点击浏览器下面的命令
/opt/lampp/bin/mysql_upgrade
答案 8 :(得分:0)
我正在使用Windows 10系统,而对我有用的解决方案是 mysql_upgrade -u root -p
但是您需要确保安装目录的mysql / bin文件夹中存在的mysql_upgrade脚本的路径需要添加到环境变量路径中,此命令才能起作用