Вызваны 2 хранимые процедуры Php: «имя таблицы уже существует» - PullRequest
0 голосов
/ 17 мая 2018

У меня есть хранимые процедуры, вызываемые в моем php-файле:

// PROCEDURE SQL
            $sql2 = "SELECT * FROM tmp ORDER BY day ASC;";

            //CALL WITH SESSION VARS
            if(!$mysqli->query("CALL proc1('". $_SESSION['var1']." ', '". $_SESSION['var2'] ." 00:00:00','". $_SESSION['var3'] ." 00:00:00');"))
                die($mysqli->error);

            //EXEC SQL2
            $result = $mysqli->query($sql2)
                or die($mysqli->error);

            $i=0;

            while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

                //do some calculs on fetched results and get value from $row['x']


                if($row['r2'] == NULL){
                // SECOND PROCEDURE SQL
                // note : table name and procedure name are different
                $sql3 = "SELECT r2 FROM temp ORDER BY day DESC LIMIT 1;";

            //CALL WITH SESSION VARS AND LARGER DATE
            if(!$mysqli->query("CALL proc2('". $_SESSION['var1']." ', '2017-01-01 00:00:00','". $_SESSION['var4'] ." 00:00:00');"))
                die($mysqli->error);

            //EXEC
            $result2 = $mysqli->query($sql3)
                or die($mysqli->error);

            while ($row2 = $result2->fetch_array(MYSQLI_ASSOC)) {
                $value_r2 = $row2['r2'];
            }

Причина, по которой я хочу это сделать, заключается в том, что я хочу изменить значение моих данных, извлеченных при первом вызове, если оно возвращает ноль

Как вы можете заметить, мои две процедуры не совпадают, и имена таблиц каждой процедуры также различны, так как я могу иметь "временную таблицу уже существует" на моей веб-странице, когда я загружаю этот код?

РЕДАКТИРОВАТЬ:

Мои процедуры извлекают результаты из моей базы данных и вставляют данные во временную таблицу. Временные таблицы не имеют одинакового имени. Затем, когда я вызываю процедуру, я делаю запрос к связанной временной таблице.

1 Ответ

0 голосов
/ 17 мая 2018

Звучит так, как будто что-то сломано или проблема с кэшированием. Попробуйте одно из следующего:

FLUSH TABLES [tablename];
REPAIR TABLE tablename;
DROP TABLE tablename;

Не забудьте сделать резервную копию ваших данных.

...