Ошибка при выполнении запросов SQL, которые работают, если выполняются отдельно - PullRequest
0 голосов
/ 18 октября 2019

Я получаю ошибки только на реальном хостинге (hostinger). Он отлично работает на моем локальном (XAMPP) сервере. Кроме того, на сервере живого хостинга ошибка появляется, только если я выполняю несколько проверок, которые вызывают соответствующие операторы PDO.

Вот мой код:

if(check if user exists){
   if(submitted status different from status in DB){
   call PDO function to update status and enter into log file
   }

   if(submitted role different from role in DB){
   call PDO function to update role and enter into log file
   }

   if(submitted class different from class in DB){
   call PDO function to update class and enter into log file
   }
 }else{
       redirect()
    }

Три «оператора if» только проверяют, отличается ли представленное значение от значения, присутствующего в БД, поэтому я могу обновить только если представленные значенияотличается от соответствующего в БД. Кроме того, статус, роль и класс не зависят друг от друга.

Функция PDO:

  Each PDO function has a query like 
  "INSERT INTO log where....;
   UPDATE users where...."

Я получаю сообщение об ошибке, если выполняются два или более условия. Если выполняется только одно условие, например, требуется только обновление статуса, то я не получаю никакой ошибки.

Кроме того, даже если два или более условий проходят (например, статус и роль должны быть обновлены), иЯ получаю сообщение об ошибке, изменения как-то успешно отражаются в БД.

Как я уже говорил, на XAMPP все отлично работает.

ОШИБКА на хостинге:

 Warning: Packets out of order. Expected 2 received 3. Packet size=48 
 in..... line 39

 Warning: Database::query(): MySQL server has gone away in..... line 39

 Warning: Database::query(): Error reading result set's header 
 in.....line39 

 Fatal error: Uncaught PDOException: SQLSTATE[HY000]General error: 2006 
 MySQL server has gone awayin.......<--SOME VERY LONG TEXTS-->

Буду очень признателен, если кто-нибудь сможет пролить свет на то, почему я получаю эту ошибку.

Прошу прощения, если это глупый вопрос!

1 Ответ

0 голосов
/ 18 октября 2019

Никогда раньше не сталкивался с этой ошибкой, но я использовал Hostinger и другие бесплатные хостинговые сайты, и они обычно предоставляют довольно плохой сервис для бесплатных учетных записей

Из-за ошибки в поиске, я нашел ответ stackoverflow: MySQLошибка 2006: сервер mysql ушел , и если вы говорите, что запросы работают на локальном хосте, проблема может заключаться в «очень низком значении по умолчанию для max_allowed_packet» от Hostinger, которое приводит к сбою ваших параллельных запросов

Я рекомендую попробовать "alwaysdata.com", лучший бесплатный хостинг, который я нашел

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...