Gambas-it

Gambas3 => Programmazione => Topic aperto da: dregi - 05 Settembre 2019, 18:51:58

Titolo: Errore nella connessione
Inserito da: dregi - 05 Settembre 2019, 18:51:58
....e finalmente sono riuscito a migrare il database da Access a Postgre, tutto bene. Il database lo apro e leggo con delle routine da codice, un record alla volta popolando dei Textbox. Dal momento che mi servirebbe un elenco, decido di usare Datasource e Databrowser che metto in un form e collego ad una connessione creata sotto Connessioni.
Al momento di aprire il form, quando deve connettere mi dà il seguente errore: cannot open database fe_sedauth: no password. Ho googlato un po', ma sul da farsi non c'ho capito molto...
Qualche buona anima sa cosa dovrei fare?
Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 05 Settembre 2019, 19:32:52
decido di usare Datasource e Databrowser che metto in un form e collego ad una connessione creata sotto Connessioni.
Al momento di aprire il form, quando deve connettere mi dà il seguente errore: cannot open database fe_sedauth: no password. Ho googlato un po', ma sul da farsi non c'ho capito molto...
Qualche buona anima sa cosa dovrei fare?

Guarda sulle connessioni create così anche io ho cercato di capire come crearle su database che non sono all'interno del progetto ma non ci sono riuscito.
Ho fatto diverse prove suggerite sul forum francese direttamente da Bodard, ma nulla.
Ho anche chiesto sulla ML, nulla anche li o almeno mi sembra di aver capito che puoi ottenerla solo con database interni al progetto.

Spero di essere smentito da shordi  ;D

Siccome non so che Gambas hai in quello compilato ci sono degli esempi, ti allego quello che usa Datasource ma crea una connessione classica (diciamo così) vedi se ti aiuta.

 :ciao:
Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 06 Settembre 2019, 09:27:14
Al momento di aprire il form, quando deve connettere mi dà il seguente errore: cannot open database fe_sedauth: no password.

Ripensandoci a mente fredda, sembra che tu non gli abbia passato la password.
Io ho sempre provato questo tipo di connessione con SQLite che è standalone e forse è per quel motivo che con funziona con collegamenti a database esterni al progetto.
Puoi spiegare meglio come cerchi di collegarti?

 :ciao:
Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 06 Settembre 2019, 18:02:52
Ha creato un database vuoto (starsdb) seguendo le indicazioni dello wiki di sotema poi in un nuovo progetto gambas per database ho cliccato col tasto destro del mouse su Connessioni > Nuova connessione... e ho inserito nella finestra i dati richiesti corretti, ho scelto il database e ho dato ok.
L'unico inconveniente è che, credo non avendo impostato il portachiavi (è una virtuale), mi dice che non può salvare la password.

Vedi immagini allegate

 :ciao:
Titolo: Re:Errore nella connessione
Inserito da: dregi - 06 Settembre 2019, 23:33:37
Si certo è quello che succede anche a me....e poi però non funziona e dà l'errore che ti ho scritto, ossia non trova la password....quella password che non riesce a salvare?  :-\
Nel progetto database di esempio che mi hai segnalato, trovo dei buoni spunti da tenere in considerazione, ma non ho risolto il problema del collegamento del Datasource con una connessione e database.  nel mio codice ho seguito l'indicazione presente nella form FTest del progetto Database, come segue:
Codice: [Seleziona]
Public Sub Form_Activate()
    Connetti
    Associa 
End

Public Sub Connetti()
  $Con.Close()              ' Close the connection
  $Con.Type = "postgresql"  ' Type of connection
  $Con.Host = "localhost"   ' Name of the server
  $Con.Login = "postgres"   ' User's name for the connection
  $Con.Port = "5432"        ' Port to use in the connection, usually 3306
  $Con.Name = "OptoDB"      ' Name of the database we want to use
  $Con.Password = "psw"     ' User's password
Try $Con.Open()             ' Open the connection
If Error Then
  $Con = Null
  Message.Error("Errore durante la connessione")
Endif
End

Public Sub Associa()
If $Con <> Null Then
 DataSource1.Connection = DB.Current
Endif
End
Ebbene non succede nulla, o meglio, il programma va in errore, ma non segnala nulla del codice, bensì nella console leggo: gb.gui.qt: warning: 'gb.qt5' component not found, using
 'gb.qt4' instead
  :hard:

(Gambas 3.13.0)

Gianluigi>L'unico inconveniente è che, credo non avendo impostato il portachiavi (è una virtuale), mi dice che non può salvare la password.
Di cosa si tratta? Di quale portachiavi parli? Come si imposta?

Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 07 Settembre 2019, 00:04:34
Si certo è quello che succede anche a me....e poi però non funziona e dà l'errore che ti ho scritto, ossia non trova la password....quella password che non riesce a salvare?  :-\
Non hai colto il suggerimento implicito  ;D vale a dire che credo che se tu imposti il portachiavi di Gnome dovrebbe funzionare
Citazione
Nel progetto database di esempio che mi hai segnalato, trovo dei buoni spunti da tenere in considerazione, ma non ho risolto il problema del collegamento del Datasource con una connessione e database.  nel mio codice ho seguito l'indicazione presente nella form FTest del progetto Database, come segue:
Codice: [Seleziona]
Public Sub Form_Activate()
    Connetti
    Associa 
End

Public Sub Connetti()
  $Con.Close()              ' Close the connection
  $Con.Type = "postgresql"  ' Type of connection
  $Con.Host = "localhost"   ' Name of the server
  $Con.Login = "postgres"   ' User's name for the connection
  $Con.Port = "5432"        ' Port to use in the connection, usually 3306
  $Con.Name = "OptoDB"      ' Name of the database we want to use
  $Con.Password = "psw"     ' User's password
Try $Con.Open()             ' Open the connection
If Error Then
  $Con = Null
  Message.Error("Errore durante la connessione")
Endif
End

Public Sub Associa()
If $Con <> Null Then
 DataSource1.Connection = DB.Current
Endif
End
Ebbene non succede nulla, o meglio, il programma va in errore, ma non segnala nulla del codice, bensì nella console leggo: gb.gui.qt: warning: 'gb.qt5' component not found, using
 'gb.qt4' instead
  :hard:

(Gambas 3.13.0)

Il warning è dovuto al fatto che nel PPA c'è un errore che abbiamo già segnalato a chi di dovere ma non è riuscito ancora a metterlo a posto, per non vederlo togli la spunta a gb.gui.qt e la metti a gb.qt4 e gb.qt4.ext.

Invece continui a non darmi retta per il resto, evidentemente non hai seguito la guida di sotema del wiki, altrimenti avresti creato l'utente test (dagli il tuo nome user) e con quello e non con l'utente root avresti creato il database.
Rileggiti bene la guida, controlla come ho fatto io (vedi il mio topic https://www.gambas-it.org/smf/index.php?topic=7253.0) metti tutto in ordine e crea correttamente un database vuoto.
posta qui i risultati di
Codice: [Seleziona]
postgres=# \l
postgres=# \du
postgres=# \c <nuovo database>
<nuovo database>=# \dn
Alla fine mi scrivi e vediamo come continuare usando il codice Gambas.

 :ciao:
Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 07 Settembre 2019, 00:11:34

Gianluigi>L'unico inconveniente è che, credo non avendo impostato il portachiavi (è una virtuale), mi dice che non può salvare la password.
Di cosa si tratta? Di quale portachiavi parli? Come si imposta?

Mentre ti rispondevo hai aggiunto questo, ora come ora non ricordo, il portachiavi è dove Gnome salva le password criptate, cerca su Google come attivarlo.
Sembra proprio che il portachiavi di Gnome non sia supportato, lascia perdere le ricerche...
Titolo: Re:Errore nella connessione
Inserito da: dregi - 07 Settembre 2019, 11:50:21
Gianluigi> evidentemente non hai seguito la guida di sotema del wiki,

Mi posti il link per favore?
Titolo: Re:Errore nella connessione
Inserito da: dregi - 07 Settembre 2019, 12:14:55
Gianluigi>nvece continui a non darmi retta per il resto</i>
Perdonami, faccio un po' di fatica a seguirti.
avresti creato l'utente test (dagli il tuo nome user) e con quello e non con l'utente root avresti creato il database.
Per chiarezza, da inesperto, quando sperimentalmente ho creato il database OptoDB ho lasciato come user e proprietario postgres, ma la connessione col codice che sopra ti ho postato funzionava egualmente collegata ai Textbox. Ora ho creato l'utente dregi con sua password, ho provato la connessione e funziona se collegata ai textbox.... per il collegamento con datasource, da buon velista, sono ancora in alto mare. ;D . Ho anche tentato di rendere propretario del database l'user dregi con
Codice: [Seleziona]
ALTER DATABASE OptoDB OWNER TO dregi
ma secondo me senza successo.
Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 07 Settembre 2019, 12:40:48
Citazione
Mi posti il link per favore?
??? Te l'avevo già postata in precedenza.
https://www.gambas-it.org/wiki/index.php?title=Installazione_Server_PostgreSQL

Citazione
ma secondo me senza successo.

Perchè non posti il risultato dei comandi, come ti ho chiesto?
Titolo: Re:Errore nella connessione
Inserito da: dregi - 07 Settembre 2019, 16:54:06
(http://dregi.altervista.org/Schermata.png)
Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 07 Settembre 2019, 17:00:31
Una banalità, un'immagine la posso postare solo attraverso un link?

Se guardi sotto l'editor vedi un + Allegati ed altre opzioni ci clicchi sopra, sotto Allega: clicchi su sfoglia e navighi fino al file che vuoi allegare.
Se devi allegare più cose clicchi su (altri allegati) se hai sbagliato file clicchi su (Rimuovi allegati) e ricominci daccapo.
Titolo: Re:Errore nella connessione
Inserito da: dregi - 07 Settembre 2019, 17:27:15
Ops.... scusa, hoi leto i n ritardo. tra l'altro ora ho anche creato l' user test...

Titolo: Re:Errore nella connessione
Inserito da: dregi - 07 Settembre 2019, 17:30:36
Ho scoperto ora risposta rapida, ma non trovo per allegati...
Titolo: Re:Errore nella connessione
Inserito da: dregi - 07 Settembre 2019, 17:37:52
Codice: [Seleziona]
postgres=# SELECT * from pg_user;
 usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 postgres |       10 | t           | t        | t       | t            | ******** |          |
 dregi    |    16466 | t           | t        | f       | f            | ******** |          |
 test     |    16467 | t           | f        | f       | f            | ******** |          |
(3 rows)
Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 07 Settembre 2019, 18:26:15
Prendi un bel respiro, scaricati e leggi la guida allegata.

Guarda cosa ho scritto e riportato in questo topic (*), guarda come l'ho fatto.
Rispondi alle domande che ti ho fatto in precedenza, sii preciso.

L'immagine e l'interrogazione che hai postato sembrano dare due risposte differenti  :-\

(*) https://www.gambas-it.org/smf/index.php?topic=7253.0

 :ciao:
Titolo: Re:Errore nella connessione
Inserito da: dregi - 08 Settembre 2019, 11:43:29
Gianluigi, oggi sono abbastanza contento....rimangono irrisolte alcune cose, ma accontentandomi di andare per scomparti ne ho risolto altre. Certo "apparentemente" DataSource sembrerebbe una comodità, ma alla fine a manina cioè via codice ho popolato una GridView, mi ci sposto dentro individuando l' id del database per compiere le operazioni necessarie....e altro non mi serve per l'elenco clienti.
La gestione di Postgres benchè qualcosa, come hai visto abbia fatto, rimane  lì, così, così....ad esempio non capisco perchè dregi che ha tutti i permessi, come si vede dalla schermata che ho postato, non si può loggare, nel senso, se faccio
Codice: [Seleziona]
sudo -i -u postgres
tutto ok, ma se tento con
Codice: [Seleziona]
sudo -i -u dregi
, non se ne parla. E' normale?
Titolo: Re:Errore nella connessione
Inserito da: Gianluigi - 08 Settembre 2019, 14:12:02
Ti suggerisco delle cose e ne fai esattamente delle altre.

Comunque che cosa ti ritorna il comando $ psql -U dregi -d OptoDB

Nota: il significato di nomi minuscoli non contempla OptoDB

...
La gestione di Postgres benchè qualcosa, come hai visto abbia fatto, rimane  lì, così, così....ad esempio non capisco perchè dregi che ha tutti i permessi, come si vede dalla schermata che ho postato, non si può loggare, nel senso, se faccio...
io non ho visto quello che stai sostenendo, ad esempio nel mio caso:
Codice: [Seleziona]
$ psql -U postgres
Inserisci la password per l'utente postgres:
psql (11.5 (Ubuntu 11.5-1.pgdg19.04+1))
Digita "help" per avere un aiuto.

postgres=# \l


                                   Lista dei database
   Nome    | Proprietario | Codifica | Ordinamento |    Ctype    | Privilegi di accesso 
-----------+--------------+----------+-------------+-------------+-----------------------
 postgres  | postgres     | UTF8     | it_IT.UTF-8 | it_IT.UTF-8 |
 starsdb   | gianluigi    | UTF8     | it_IT.UTF-8 | it_IT.UTF-8 |
 template0 | postgres     | UTF8     | it_IT.UTF-8 | it_IT.UTF-8 | =c/postgres          +
           |              |          |             |             | postgres=CTc/postgres
 template1 | postgres     | UTF8     | it_IT.UTF-8 | it_IT.UTF-8 |
(4 righe)

Si vede che l'utente gianluigi è propietario del database starsdb
Citazione
Codice: [Seleziona]
sudo -i -u postgres
tutto ok, ma se tento con
Codice: [Seleziona]
sudo -i -u dregi
, non se ne parla. E' normale?

È chiaro che tu non segui la guida del wiki, forse ti conviene chiedere a chi ti ha suggerito i comandi.
Il secondo credo sia un nonsense

Ad esempio se io digito questo comando :
Codice: [Seleziona]
$ psql -U gianluigi -d starsdb
Inserisci la password per l'utente gianluigi:
psql (11.5 (Ubuntu 11.5-1.pgdg19.04+1))
Digita "help" per avere un aiuto.

starsdb=>

come vedi mi collego al database.

NB: $ è la fine del prompt e non va copiato, il comando è solo la prima riga il resto è la risposta del terminale.
Titolo: Re:Errore nella connessione
Inserito da: markZ - 08 Settembre 2019, 19:48:00
Scusa se tu digiti  sudo dregi  il sistema ti risponde   dregi non è nella lista sudoers.
Se tu ti sei attribuito tutti i permessi sul database devi dare i comandi senza il  sudo.
Puoi usare direttamente  psql, createdb, dropdb, pg_dump  e tutti gli altri comandi.