mysql.proc의 열 개수가 잘못되었습니다.예상 20명, 16명 발견테이블이 파손되었을 가능성이 있습니다.
저는 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();
?>
저도 이 오류가 있었어요.달려서 고쳤다.
mysql_upgrade -u root -p
또한 를 실행하여 mysql 서비스를 재시작합니다.
service mysqld restart
MacOS 모하비에서 XAMPP를 xampp-osx-7.2.10에서 7.3.9로 업데이트 했을 때도 같은 문제가 있었습니다.해결책은 다음과 같습니다.
"Macintosh HD applic Applications x XAMPP x xamppfiles bin bin" 에서 mysql_upgrade 파일을 찾아 더블 클릭합니다.
이 오류는 잘못된 업그레이드가 수행되었을 때 발생합니다.예를 들어 5.0에서5.1로 업그레이드 했을 때 mysql_upgrade 스크립트를 실행하지 않았을 때 발생합니다.또한 드물지만 5.0에서 5.5로 직접 업그레이드 했을 때 발생할 수 있습니다.(많은 사용자가 이렇게 하는데 이러한 업데이트는 공식적으로 지원되지 않습니다.)호스팅 서비스를 사용하고 있다고 합니다.티켓을 생성하여 알려야 한다고 생각합니다.그 문제에 대해서.SUPER 특권이 없으면 할 수 있는 일이 없습니다.단, 권한이 있는 경우 mysql_upgrade를 실행하기만 하면 됩니다.
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).
Debian 8(jessie)에서 mysql 서버를 5.5에서 5.7로 업데이트 했을 때도 같은 문제가 있었습니다.제 경우 다음 명령을 실행했을 때 정상적으로 동작했습니다.
mysql_upgrade --force -uroot -p
Ubuntu 20.04에서 xampp를 사용하고 있는데, 동일한 메시지 오류를 반환하는 문제는 이 솔루션으로 해결되었습니다.
- xampp 디렉토리 cd /opt/lampp/로 이동합니다.
- bin 디렉토리: cd bin으로 이동합니다.
- sudo ./mysql_upgrade 스크립트를 실행합니다.
크레딧 : https://askubuntu.com/questions/1171409/how-to-run-mysql-upgrade-when-using-xampp
업그레이드의 필요성에 대해서는 정확하지만, 이 에러가 발생하는 것은 그것뿐만이 아닙니다.
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
...
그러나 오류의 진짜 원인은 fetchrow_arrayref 대신 fetchall_arrayref를 사용한 것입니다.다음은 오류 없이 작동했습니다.
my $rv = $sth_indexq->fetchrow_arrayref;
$rv의 데이터는 2가 아니라 1레벨에 불과했습니다.
mysql_upgrade 솔루션은 이 문제를 매우 잘 해결할 수 있지만 간단한 솔루션은 데이터를 알고 올바른 검색 코드를 사용하는 것입니다.
제이 화이트
Windows 10 시스템을 사용하고 있었는데, 그 솔루션은 mysql_upgrade -u root -p였습니다.
그러나 이 명령어가 작동하려면 설치 디렉토리의 mysql/bin 폴더에 있는 mysql_upgrade 스크립트에 대한 경로를 환경 변수 경로에 추가해야 합니다.
아래 명령어를 브라우저로 누르다
/opt/lampp/bin/mysql_upgrade
Linux의 경우
LAMPP 를 사용하고 있는 경우는, 다음과 같이 수정할 수 있습니다.
sudo /opt/lampp/lampp start
/opt/lampp/bin/mysql_upgrade
그렇지 않으면 mysql을 별도로 설치한 경우 다음과 같이 할 수 있습니다.
mysql_upgrade -u root -p
service mysqld restart
다른 OS의 경우 lampp 설치의 bin 디렉토리로 이동하여 mysql_upgrade 파일을 검색하여 실행해 보십시오.
예를 들어 이행이 아닌 업그레이드 시 발생합니다.
the where 라고 쓰여있는 부분version check failed
련련: :
Version check failed. Got the following error when calling the 'mysql' command line client
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
FATAL ERROR: Upgrade failed
되지 않는 만, 「호환성이 없는 클라이언트 버전은, 「호환성이 없다」라고 하는 것입니다.mysql
데이터베이스도 다릅니다.
이것이 테이블의 현재 정의입니다.enum 컬럼을 보여줍니다.type
컬럼이 되어 있습니다.aggregate
3.3
또 다른 문제는 다음과 같습니다.
MariaDB 10.4 이상에서는 이 테이블은 Aria 스토리지 엔진을 사용합니다.
5.파일을 한 후 " 5.x"를 한다.InnoDB " " "proc
도움말; (MariaDB 5.x의 경우): https://github.com/google/mysql/blob/master/scripts/mysql_system_tables.sql
경우에는 에일리어스 에일리어스를 문제가 하였습니다.COUNT()
★★★★★★★★★★★★★★★★★★:
MariaDB> SELECT x.COUNT(1) FROM (SELECT 1) AS x;
ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 21, found 20. Created with MariaDB 100137, now running 100334. Please use mysql_upgrade to fix this error
MariaDB> SELECT COUNT(1) FROM (SELECT 1) AS x;
+-------------+
| COUNT(test) |
+-------------+
| 1 |
+-------------+
1 row in set (0.001 sec)
바와 같이 COUNT()
그건 효과가 있다. SELECT 로 SELECT 필드 앞에 되어 버렸습니다.COUNT()
새로운 데이터베이스에 다른 에러 메시지가 표시되는지 어떨지는 모르겠지만 서버는 수년간 정상적으로 동작하고 있으며 쿼리를 수정함으로써 에러는 해소됩니다.따라서...이 스레드의 다른 문제처럼 업그레이드/실행 문제가 아니라 런타임/실행 오류인 것 같습니다.
언급URL : https://stackoverflow.com/questions/16177465/column-count-of-mysql-proc-is-wrong-expected-20-found-16-the-table-is-probabl
'programing' 카테고리의 다른 글
pip이 현재 버전을 강제로 재설치할 수 있습니까? (0) | 2022.10.02 |
---|---|
Common JS, AMD 및 Require JS와의 관계 (0) | 2022.10.02 |
VueJs/NuxtJs:이미지 파일을 업로드하여 nuxtjs 프로젝트의 정적 폴더에 저장하는 방법 (0) | 2022.10.02 |
MySQL에서 Google BigQuery로 데이터 복사 (0) | 2022.10.02 |
MySQL에서 특별한 칼럼은 여러 기둥을 추가하라. (0) | 2022.10.02 |