Base di conoscenze
1 000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Utilizzare viste, trigger, stored procedure e routine
Questa guida illustra in dettaglio le funzionalità disponibili per la gestione dei database relazionali sugli hosting di Infomaniak.
Utilizzo di viste, trigger, procedure memorizzate e routine
Per quanto riguarda la gestione dei database relazionali, la funzionalità delle viste è disponibile per impostazione predefinita, consentendo agli utenti di creare viste per semplificare la gestione e la presentazione dei dati.
Tuttavia, alcune funzionalità avanzate che consentono una manipolazione più precisa e complessa dei dati, come…
- “trigger” (eventi)
- procedure memorizzate ("stored procedures")
- routine
- e la creazione di funzioni
… sono disponibili solo sui Server Cloud.
Non sono ammessi sui server condivisi.
Questa restrizione è dovuta principalmente ai potenziali rischi per la stabilità dell'infrastruttura. Una configurazione errata o un utilizzo eccessivo di queste funzionalità potrebbe creare cicli infiniti o sovraccarichi significativi, influenzando non solo le prestazioni del server interessato, ma anche l'esperienza di tutti i clienti ospitati sulla stessa infrastruttura.
Risolvere un problema di importazione di un dump MySQL/MariaDB
Durante l'esportazione e la successiva reimportazione di un database MySQL o MariaDB tramite l'interfaccia di hosting di Infomaniak, potrebbe verificarsi un errore a causa di problemi relativi ai DEFINER dei trigger o delle view. Questo accade quando gli oggetti del database sono stati creati con un utente specifico (chiamato definer) che non esiste più al momento dell'importazione.
In pratica, il processo di esportazione e importazione utilizza un utente temporaneo, utilizzato esclusivamente durante queste operazioni. Dopo l'eliminazione di questo utente, le view o i trigger definiti con questo account come DEFINER diventano non validi, causando errori di questo tipo:
Errore generale: 1449 L'utente specificato come definer ('xxxx_temp_1'@'%') non esiste
Per evitare questo problema, è possibile correggere il file di backup (dump.sql o dump.sql.gz) prima dell'importazione, sostituendo le definizioni di definer con CURRENT_USER. In questo modo, è possibile associare automaticamente i trigger e le viste all'utente corrente al momento dell'importazione.
Ecco un esempio di comando per modificare il dump prima dell'importazione:
sed -E 's/DEFINER=`[^`][^`]*`@`[^`][^`][^`]*`/DEFINER=CURRENT_USER/g' dump.sql > dump-corrected.sql
Una volta effettuata questa sostituzione, il file corretto può essere importato normalmente tramite il Pannello di controllo Infomaniak. Questo comportamento è noto ed è legato al funzionamento degli utenti temporanei durante l'esportazione/importazione. Al momento non sono previste modifiche al processo di esportazione/importazione, ma la questione è comunque oggetto di valutazione a livello di infrastruttura.
Per maggiori informazioni sulla variabile CURRENT_USER, consultare la documentazione ufficiale di:
Link a questa FAQ: https://faq.infomaniak.com/821
Questa FAQ è stata utile?