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

Share this post


Link to post
Share on other sites

Hola, sigo con el problema, alguien que quiera darme una mano por favor?

 

el host quiere venderme un VPS como solucion

Edited by ventu172 (see edit history)

Share this post


Link to post
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 .

 

 

Share this post


Link to post
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 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More