Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

No puedo ejecutar procedimientos almacenados en servidor web

Estas en el tema de No puedo ejecutar procedimientos almacenados en servidor web en el foro de Mysql en Foros del Web. Hola amigos de Foros del Web: Despues de probar y ejecutar varias veces procedimientos almacenados en mi máquina localmente, no logro ejecutarlos en el hosting ...
  #1 (permalink)  
Antiguo 07/04/2011, 08:22
 
Fecha de Ingreso: marzo-2011
Ubicación: Iquique
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Pregunta No puedo ejecutar procedimientos almacenados en servidor web

Hola amigos de Foros del Web:
Despues de probar y ejecutar varias veces procedimientos almacenados en mi máquina localmente, no logro ejecutarlos en el hosting definitivo.

-El Hosting tiene php 5, Mysql 5.
-El usuario de la base de datos tiene todos los privilegios.

Cuando levante los procedimientos almacenados les tuve que quitar la parte DEFINER usuarioxxx@localhost de la instrucción CREATE porque no me permite asignar opciones con super privilegios.

No entiendo que pasa que no se pueden ejecutar si en mi maquina corren perfectamente.

Quiero compartir aca mi codigo de coneccion y ejecucion.

Código PHP:
define('CN_SRV','localhost');
define('CN_USR','usuario');
define('CN_PSW','mipasword');
define('CN_DB','mibasededatos');

$resultado=ejecutarProc('CALL pa_NuevoIngreso($arg1,$arg2)');

function 
ejecutarProc($sentencia){
    
$link mysqli_connect(CN_SRVCN_USRCN_PSWCN_DB);
    
$res=mysqli_query($link$sentencia);
    
mysqli_close($link);
    return 
$res;


NOTA: Los procedimientos funcionan perfectamente en mi máquina.
  #2 (permalink)  
Antiguo 07/04/2011, 09:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo ejecutar procedimientos almacenados en servidor web

Cita:
-El usuario de la base de datos tiene todos los privilegios.
Eso no es necesariamente cierto. Los hosting a ciertos privilegios que no te dab.
¿Verificaste que tu user tenga privilegios de EXECUTE?
¿Capturaste el o los errores devueltos por MySQL cuando quieres usarlos? ¿Qué dicen?
¿Te aseguraste que los parámetros estén correctamente escritos? Es decir, los parámetros que muestras allí en tu script, son solamente numéricos. ¿es correcto?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/04/2011, 09:55
Avatar de ArkangelGammar  
Fecha de Ingreso: enero-2011
Ubicación: <?php $persona->ubicacion('ArkangelGammar'); ?>
Mensajes: 179
Antigüedad: 13 años, 3 meses
Puntos: 19
Respuesta: No puedo ejecutar procedimientos almacenados en servidor web

Estas utilizando sentencias de MySqli, cuando en realidad tendrias que estar utilizando Mysql.

Espero haber ayudado.

Saludos
__________________
"No entiendes algo al menos que seas capaz de explicarselo a tu abuela.
Cada dia sabemos mas....y entendemos menos...."

A. Einstein - Genio mas alla de la razon.
  #4 (permalink)  
Antiguo 07/04/2011, 12:03
 
Fecha de Ingreso: marzo-2011
Ubicación: Iquique
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: No puedo ejecutar procedimientos almacenados en servidor web

Gracias por las respuestas.

Lo he probado localmente y me funciona cuando lo pruebo arriba me sale este error:

#1312 - PROCEDURE dragonci_bd2.pa_NuevoIngreso can't return a result set in the given context

En realidad he revisado una y otra vez el código.
Los datos de conexion son correctos porque son constantes que uso con mysql y mysqli y en el hosting me funcionan por lo menos los de mysql.
Con respecto a los argumentos del procedimiento almacenado lo que paso a las variables son simplemente dos numeros enteros que utilizo para probar mi código alli escrito.

Segun tengo entendido, los procedimientos almacenados no pueden ejecutarse con mysql de php, deben ser ejecutados con mysqli de php. De hecho al principio traté yo mismo de ejecutarlos localmente con mysql de php, pero no me funcionaron. Con mysqli si responden.

Yo lo hago asi en mi maquina y me funciona bien como te comento. Y a pesar de que he verificado que el hosting tiene instalada la libreria de mysqli, no logro hacer que me funcione.

Los permisos estan todos los checkbox marcados y son estos.

-SELECCIONAR
-CREAR (CREATE)
-INSERTAR (INSERT)
-MODIFICAR (ALTERAR-)
-ACTUALIZAR (UPDATE)
-TIRAR (DROP)
-BORRAR (DELETE)
-PONER SEGURO A LAS TABLAS (LOCK TABLES)
-INDEX
-REFERENCIAS
-CREAR TABLAS TEMPORALES
-CREAR ROUTINA
-EJECUTAR

Los parametros en realidad dan lo mismo porque los pruebo simplemente para que me arroje un resultado pero no puedo.

Hay algo que me tiene pensando y es lo siguiente:
Cuando descargue la base de datos del hosting despues de haber levantado los procedimientos almacenados, estos aparencen creados con el nombre de usuario del dominio y lo logico es que se creen con el nombre de usuario de la base de datos que es el que se deberia conectar con mysql o mysqli para poder ejecutarlos.

El hecho de no poder usar CREATE DEFINER usuario@localhost me hace pensar que pueden ser permisos pero que no aparecen en cpanel.

Si alguien sabe que me corrija en el tema de permisos o lo que llaman SUPER privilegios.


He enviado un mail a mi proveedor de hosting y estoy a la espera de que me diga que hacer.
Si encuentro solución la publicaré aquí.
  #5 (permalink)  
Antiguo 07/04/2011, 12:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo ejecutar procedimientos almacenados en servidor web

Bueno, algunas cosas quedan más claras:
- No tienes problemas de permisos para ejecutar o crear los SP.
- El definer del SP es irrelevante, porque el usuario tiene plenos permisos de ejecución y creación.
- Si los parámetros son enteros, y los datos son enteros, entonces no hay problemas ma nivel de ejecución.

Queda la duda de si MySQL está devolviendo algún error cuando envías a ejecutar el SP, porque no estás capturando en el PHP una salida por error... ¿Por qué no pruebas?

Por otro lado, estás cerrando la conexión en el mismo proceso, lo que implica que abres y cierras conexiones indiscriminadamente... Eso no es una buena práctica, porque el pool de conexiones se puede saturar y traerte problemas.
Además de los problemas con el pool, tengo mis serias dudas de que el result obtenido realmente resulte útil o contenga algo, luego de cerrar la conexión... ¿mysqli_close() no libera los recursos de la consulta?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 07/04/2011, 12:44
 
Fecha de Ingreso: marzo-2011
Ubicación: Iquique
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: No puedo ejecutar procedimientos almacenados en servidor web

gracias gnzsoloyo:

Respecto de abrir y cerrar la conexiones. Por suerte yo uso generalmente una sola funcion que me devuelva lo que quiero cuando se trata de procedimiento almacenado y en ella me conecto esa unica vez hasta que termina el script php y vuelve al cliente.

Gracias por tu consejo, por que no sabia eso del pool de conexiones.

Bueno por otro lado cuando lo hago con mysql es diferente porque me conecto una vez al principio y la uso durante todo el script ejecutando querys y "fetchando" datos.

Yendo al tema, descubri que mysqli ni siquiera me conecta a la base de datos, ya que ahora solo pido que me diga si se conecto o no sin ejecutar el procedimiento almacenado y me tira el siguiente error:

Fatal error: Call to undefined function mysqli_connect() in /home/dragonci/public_html/proc.php on line 7
  #7 (permalink)  
Antiguo 08/04/2011, 08:47
 
Fecha de Ingreso: marzo-2011
Ubicación: Iquique
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: No puedo ejecutar procedimientos almacenados en servidor web

Buenos dias:
Ayer despues de varias revisiones me di cuenta que me puedo conectar con mysql pero no asi con mysqli, entonces ahora mi duda cobra otro sentido y mi consulta es esta:

¿ Porque no me puedo conectar mediante mysqli si estoy usando los mismos parametros para conectarme con mysql ?


(Se que si logro conectarme no debería tener nigún problema con los procedimientos almacenados)

Se agradece enormemente la ayuda. Insisto en que si doy con la solucion la explicare aca mismo.

Un gran saludo a todos.

Etiquetas: servidor, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:45.