Jump to content

Recommended Posts

Hola, me podrían ayudar con este problema?

cuando estoy cargando productos en mi tienda me aparece el siguiente mensaje cada tanto An exception occured in driver: SQLSTATE[HY000] [1226] User 'nombre_bb' has exceeded the 'max_user_connections' resource (current value: 15)

leí este POST donde se implementa la solución pero no lo se hacer, me contacte con uno de los muchachos del post y me indico lo siguiente.

 

Quote

hola, lo que hice fue crear un archivo con una clase que administra la conexion y usar un require donde tengo mi codigo con las consultas para referenciar ese archivo, solo tendrias que cambiar las variables de conexion al principio.

Este seria el archivo(obvio dentro de las comillas van los datos de tu DB)

<?php

/* Clase encargada de gestionar las conexiones a la base de datos */
Class Db{

   private $servidor='';
   private $usuario='';
   private $password='';
   private $base_datos='';
   private $link;
   private $stmt;
   private $array;

   static $_instance;

   /*La función construct es privada para evitar que el objeto pueda ser creado mediante new*/
   private function __construct(){
      $this->conectar();
   }

   /*Evitamos el clonaje del objeto. Patrón Singleton*/
   private function __clone(){ }

   /*Función encargada de crear, si es necesario, el objeto. Esta es la función que debemos llamar desde fuera de la clase para instanciar el objeto, y así, poder utilizar sus métodos*/
   public static function getInstance(){
      if (!(self::$_instance instanceof self)){
         self::$_instance=new self();
      }
      return self::$_instance;
   }

   /*Realiza la conexión a la base de datos.*/
   private function conectar(){
      $this->link=mysqli_connect($this->servidor, $this->usuario, $this->password,$this->base_datos);
      mysqli_select_db($this->link,$this->base_datos);
      @mysqli_query("SET NAMES 'utf8'");
      if (!$this->link) {
   die('No se ha podido conectar a la base de datos');
}
   }

   /*Método para ejecutar una sentencia sql*/
   public function ejecutar($sql){
      $this->stmt=mysqli_query($this->link,$sql);
      return $this->stmt;
   }

   /*Método para obtener una fila de resultados de la sentencia sql*/
   public function obtener_fila($stmt,$fila){
      if ($fila==0){
         $this->array=mysqli_fetch_array($stmt);
      }else{
         mysqli_data_seek($stmt,$fila);
         $this->array=mysqli_fetch_array($stmt);
      }
      return $this->array;
   }

   //Devuelve el último id del insert introducido
   public function lastID(){
      return mysqli_insert_id($this->link);
   }
   /**
 * Close connection to database
 */
public function __destruct()
{
    if ($this->link)
        mysqli_close($this->link);
}
}
?>

 

 

para hacer uso de esta clase harias lo siguiente:

esta linea crea una instancia de la base de datos, esta es la clave para evitar el error de limite de conexiones.

$bd=Db::getInstance();

creas tu Query normalmente

$sql='SELECT * FROM customer WHERE active="1"';

Esta linea que sigue ejecuta el query

$stmt=$bd->ejecutar($sql);

este es un ejemplo de como puedes recorrer la lista de resultados de la query y obtener un campo

while ($result=$bd->obtener_fila($stmt,0)){
        switch ($i) {
            case 0:
                $text=$text.'-'.$result["id_customer"];
                break;
            
            default:
                $text=$text.'-'.$result["customerdocnum"];
                break;
        }
        $i=$i+1;
    }

 

Hace rato no toco este codigo asi que tuve que recordar algunas cosas de su funcionamiento pero basicamente es crear la clase de conexion, espero que te sirva

 

Como implento eso?

alguien tendría un paso a paso para poder resolverlo?

copio ese codigo en notepad, cargo los datos de mi base de datos (usuario-servidor-contraseña-nombre base de datos) luego lo guardo en la raiz de la tienda con extencion .php y lugo como sigo?

 

muchas gracias a todos y en especial a @Jose Grisales por la mano que me dio

Link to comment
Share on other sites

Buenas tardes .

 

En la base de datos mysql  ,   tabla user   se graban todos los privilegios de todos los usuarios .

 

El usuario asignado a tu base de datos debe estar ahí .

Uno de los campos de esta tabla es max_connections     .

 

En tu caso el valor es 15   , por el error que muestra .   

Cámbialo a   50  y pruebas .

 

Conseguí tu problema , porque yo tengo uno que no he podido resolver . Tiene que ver con la instalación  de prestashop en localhost .

 

Mario R. Vásquez S.

 

 

Mi username es : mrvs1950 .

 

 

Link to comment
Share on other sites

8 hours ago, Mario R. said:

Buenas tardes .

 

En la base de datos mysql  ,   tabla user   se graban todos los privilegios de todos los usuarios .

 

El usuario asignado a tu base de datos debe estar ahí .

Uno de los campos de esta tabla es max_connections     .

 

En tu caso el valor es 15   , por el error que muestra .   

Cámbialo a   50  y pruebas .

 

Conseguí tu problema , porque yo tengo uno que no he podido resolver . Tiene que ver con la instalación  de prestashop en localhost .

 

Mario R. Vásquez S.

 

 

Mi username es : mrvs1950 .

 

 

Muchas gracias pero yo tengo contratado como servidor a hostinger, no lo tengo instalado localmente y no tengo permisos de super adm para modificar el valor que por defecto esta en 15 y la gente de soporte indica que no pueden cambiar el valor ellos tampoco.  😕 

me restaba probar con la solución pero como de SQL entiendo muy poco no pude aplicar la solución que brindaron 

 

 

Link to comment
Share on other sites

  • 6 months later...

Hola Ventu172

Pudiste encontrar una solución? yo tengo el mismo problema.

Tampoco logro entender el problema. Es decir, sabemos que el problema es que se alcanza el limite impuesto por el  hosting en la variable max_user_connections. (en mi caso es 5).

La gran pregunta es Por qué se alcanza esta cantidad de conexiones? En mi caso, soy el único usuario en mi dominio y además la instalación de Prestashop es nueva (v.1.7.6.5), sin extraños módulos instalados ni nada de eso.

Un misterio que no he podido entender ni resolver y me esta haciendo cuestionar cambiar tanto de hosting como de CMS, Prestashop no colabora.... Aun  así seguiré investigando.

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...