mysql.proc的列数是错误的.预计20,发现16.该表可能已损坏

use*_*258 25 php mysql phpmyadmin

我正在使用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();
?>
Run Code Online (Sandbox Code Playgroud)

小智 70

我也有这个错误.我通过跑步来修理它

mysql_upgrade -u root -p
Run Code Online (Sandbox Code Playgroud)

此外,通过运行重新启动mysql服务

service mysqld restart
Run Code Online (Sandbox Code Playgroud)

  • 只是一个小注释。我必须使用 sudo 运行,即 `sudo mysql_upgrade -uxxx -pxxx`。否则我们会出现此错误:“无法在 MariaDB 服务器数据目录中创建升级信息文件 '/var/lib/mysql/mysql_upgrade_info',errno: 13” (3认同)

小智 23

我在 MacOS Mohave 中将 XAMPP 从 xampp-osx-7.2.10 更新到 7.3.9 时遇到了同样的问题。所以解决方案是:

在“Macintosh HD???应用程序???XAMPP???xamppfiles???bin?”中找到文件mysql_upgrade 并双击它。

  • 这个对我有用。双击后重启mysql (2认同)

Fed*_*oli 15

升级错误时会发生此错误.例如,如果从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

  • 运行mysql_upgrade -u root -p为我修复了我的数据库。谢谢。 (3认同)

San*_*ues 7

在 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
Run Code Online (Sandbox Code Playgroud)

解决方案:

sudo /opt/lampp/lampp start
/opt/lampp/bin/mysql_upgrade
Run Code Online (Sandbox Code Playgroud)

问题解决了

积分: XAMPP 中似乎存在错误 - https://community.apachefriends.org/f/viewtopic.php?f=17&t=78386&sid=3d3824dd​​0b6aa2e33c3adc73c744b4b4


Cor*_*ter 6

当我在 Debian 8 (jessie) 中将 mysql 服务器从 5.5 更新到 5.7 时遇到了同样的问题。就我而言,当我执行以下命令时它工作正常:

mysql_upgrade --force -uroot -p
Run Code Online (Sandbox Code Playgroud)


Gen*_*van 6

我在 Ubuntu 20.04 上使用 xampp,返回相同消息错误的问题已通过以下解决方案解决:

  1. 进入xampp目录:cd /opt/lampp/
  2. 进入bin目录:cd bin
  3. 执行脚本: sudo ./mysql_upgrade

学分:https://askubuntu.com/questions/1171409/how-to-run-mysql-upgrade-when-using-xampp