programing

MariaDB Prepared 문에서 잘못된 형식의 통신 패킷을 반환합니다.

randomtip 2023. 8. 9. 23:00
반응형

MariaDB Prepared 문에서 잘못된 형식의 통신 패킷을 반환합니다.

저는 오늘 아침에 "잘못된 통신 패킷"이라는 몇 가지 준비된 문에서 임대된 서버 공간에 대한 오류를 받기 시작했습니다.

그것은 준비된 진술서에서만 일어나는 것 같습니다.이 코드는 수년 동안 서버에 있었지만 오늘부터 오류가 발생하기 시작했습니다.

다음과 같은 간단한 명령문이 오류를 발생시킵니다.

$stmt=$conn->prepare("SELECT RootedID, WeekDate, Qty FROM inventoryrooted");
$stmt->execute();
echo $stmt->error;
$stmt->bind_result($code, $WeekDate, $Qty);
$stmt->store_result();
while($stmt->fetch()){
     $stmtInsertRC->execute();
}
$stmt->close();

바닐라 연결로 변경하면 정상적으로 작동합니다.

$sql = "SELECT RootedID, WeekDate, Qty FROM inventoryrooted";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
 $code = $row["RootedID"];
 $WeekDate = $row["WeekDate"];
 $Qty = $row["Qty"];        
 $stmtInsertRC->execute();
}

저는 웹사이트에 잘 작동하는 수백 개의 성명서가 준비되어 있습니다.이것은 단지 몇 개의 테이블에서만 일어나는 것처럼 보입니다.공교롭게도, 오늘 아침 나비캣에서 이 두 테이블을 열어 데이터를 확인했습니다.그것이 그들을 타락시킬 수 있었는지 확실하지 않습니까?저는 테이블을 수리하고, 새로 복사본을 만들고, 테이블을 복원하려고 노력했습니다.또한 사이트 관리자에게 MariaDB를 다시 시작해 달라고 요청했습니다(아직 기다리고 있습니다).

제가 어디서 해결책을 찾아야 하는지에 대해 제안할 사람이 있습니까?제가 나무를 잘못 짚었나요?

10.3.26-마리아DB

PHP 7.2.34

문제의 원인은 호스트가 어제 릴리스된 MariaDB 10.3.26으로 업그레이드했기 때문일 가능성이 높습니다.자세한 내용은 MDEV-24121을 참조하십시오.아직 좋은 설명을 듣지 못했지만, MariaDB를 다운그레이드하거나 PHP를 7.3으로 업그레이드하거나 PDO를 활성화하는 것이 현재로서는 이 문제를 해결해준다고 합니다.

코드에 이것을 추가하면 준비된 문장 에뮬레이션이 가능할 것으로 생각합니다.

$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

언급URL : https://stackoverflow.com/questions/64683437/mariadb-prepared-statement-returns-malformed-communication-packet

반응형