У меня есть сервер Ubuntu, где я получаю (ошибка чтения пакетов связи) ошибка в MySQL error.log
Но я получаю эту ошибку только при вызове хранимой процедуры(любая хранимая процедура, которая возвращает значение) из PHP.
Я создал тестовую процедуру, просто чтобы сузить ее:
DELIMITER //
CREATE PROCEDURE hello_world()
BEGIN
select "Hello World";
END //
DELIMITER ;
Это мой тестовый код php:
<?php
$link_id = mysqli_connect("localhost", "root", "password" )or die ("no database server");
mysqli_select_db( $link_id,"test_db) or die ("database not found");
$query="select 'testing';";
echo $query.'<br>';
$result=mysqli_query($link_id,$query)or die("Query fail: " . mysqli_error());
$row = mysqli_fetch_row($result);
echo $row[0].'<br><br>';
$query="call hello_world;";
echo $query.'<br>';
$result=mysqli_query($link_id,$query)or die("Query fail: " . mysqli_error());
$row = mysqli_fetch_row($result);
echo $row[0].'<br><br>';
$query="select 'testing';";
echo $query.'<br>';
$result=mysqli_query($link_id,$query)or die("Query fail: " . mysqli_error());
$row = mysqli_fetch_row($result);
echo $row[0].'<br><br>';
?>
php печатает следующее:
select 'testing';
testing
call hello_world;
Hello World
select 'testing';
Query fail:
Это потому, что я получаю ошибку (Ошибка чтения пакетов связи) сразу после вызова хранимой процедуры, поэтомуСессия mysql уже закрыта, когда третий запрос пытается выполнить.
Примечание: запрос, вызывающий хранимую процедуру, всегда работает!Я всегда получаю результат этого запроса, он просто разрывает мое соединение с базой данных.
Как мне устранить эту проблему?