New question

Question:

Date: 31-05-2017 20:07:18 (In Spanish)

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

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
Tags: PHP - PostgreSQL - Question Votes: 1 - Answers: 5 - Views: 12 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 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
      Votes: 2 - Link answer
     
  • Date: 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!
      Votes: 0 - Link answer
     
  • Date: 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;
    
      Votes: 2 - Link answer
     
  • Date: 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
      Votes: -1 - Link answer
     
  • Date: 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
      Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com