Nueva pregunta

Pregunta:

Fecha: 31-05-2017 20:07:18 (En Español)

PHP Warning: pg_query(): Query failed: ERROR: permission denied for sequence[Resuelta]

Hola

Estoy retomando PHP tras varios años de no tocarlo (previo aprendizaje autodidacta) y comenzando con PostgreSQL (antes usaba MySQL) hice una consulta para modificar registros de una tabla (previamente cargados desde el phppgadmin) sin inconvenientes. Pero cuando quiero insertar registros sale el siguiente error: "PHP Warning: pg_query(): Query failed: ERROR: permission denied for sequence"

$cadenaConexion = "host=$host port=$port dbname=$dbname user=$user password=$password";
$conexion = pg_connect($cadenaConexion) or die("Error en la Conexión: ".pg_last_error());


Esos dos primeras líneas las uso en ambas consultas. En la de inserción sigue

$query="insert into nombretabla (id_usuario, id_tel, telefono, estado, coordenadas) values ('$id_usuario', '$id_tel', '$telefono',0,'0,0')";
$resultado = pg_query($conexion, $query) or die("Error en la Consulta SQL".pg_last_error());	


Donde todos los campos son enteros excepto coordenadas que es de tipo "point". En la tabla donde estoy cargando hay mas campos, tipo texto, que ahora no cargaba y no incluía en la consulta... pero probé introduciéndolos y el problema continúa.

¿Sugerencias?
Gracias
Pablo
Etiquetas: PHP - PostgreSQL - Pregunta Votos: 1 - Respuestas: 5 - Vistas: 12 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 31-05-2017 21:17:10 En este caso lo que te falta es asignarle los permisos adecuados a tu usuario de la base de datos.

    No conozco la estructura de tu tabla pero parece que tienes una secuencia creada en algun lado y el usuario de la base de datos que usas en tu conexion no tiene los privilegios adecuados para accesar a la secuencia. Esto obviamente afectaria acciones con alguna llave primaria que utilice un indice numerico creado por una secuencia y a llamadas como nextval, setval, etc.

    Saludos
      Votos: 2 - Link respuesta
     
  • Fecha: 01-06-2017 05:31:33 Hola Ernesto,
    Gracias, efectivamente uso un índice numérico con nextval.
    Esa modificación de privilegios la hago con el phpPgAdmin?.
    Ahí si selecciono la base de datos hay una opción de "privilegios" donde hay dos filas, en una la columna el rol está vacía y en la otra está el usuario que estoy usando en la conexión del query. El rol que está vacío tiene cargado No en al columna create, y el otro tiene Si. ¿entonces ahí está el problema? no entiendo porque si yo uso el usuario cuyo rol tiene permiso de create. En todo caso para solucionarlo ¿le asigno Si a create del rol vacío?
    Gracias!
      Votos: 0 - Link respuesta
     
  • Fecha: 01-06-2017 07:01:09 La puedes hacer desde ahi. Es una sentencia que tienes que ejecutar y listo.

    Algo como:
    GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA mi_base TO usuario;
    
      Votos: 2 - Link respuesta
     
  • Fecha: 01-06-2017 08:34:11 Hola amigo,
    El error esta al final de tu consulta '0,0' estas usando doble comilla, y te doy una sugerencia para seguridad en tu base de datos y es que llames a las variables con Corchetes ( { } ).
    Esta quedaría así
    $query="insert into nombretabla (id_usuario, id_tel, telefono, estado, coordenadas) values ('{$id_usuario}', '{$id_tel}', '{$telefono}',0,0,0)";
    $resultado = pg_query($conexion, $query) or die("Error en la Consulta SQL".pg_last_error());
    


    Saludos
      Votos: -1 - Link respuesta
     
  • Fecha: 01-06-2017 09:40:35 Hola Corplan,
    Gracias por la sugerencia. El '0,0' entiendo que es correcto porque es para un campo tipo punto. Al menos cuando hice la consulta de modificación no tuve inconvenientes.

    Ernesto, creo que pude modificarlo desde el phpPgAdmin... ni bien tenga acceso a mi pc hago la prueba

    Gracias a ambos!
    Pablo
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com