1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Utilizzare Views, Trigger, Procedure memorizzate e Routine
Questa guida dettaglia le funzionalitĂ disponibili in materia di gestione dei database relazionali sugli hosting Infomaniak.
Utilizzo di Viste, Trigger, Procedure memorizzate e Routine
Per quanto riguarda la gestione dei database relazionali, la funzionalità delle viste ("views") è disponibile per impostazione predefinita, permettendo così agli utenti di creare viste per semplificare la gestione e la presentazione dei dati.
Tuttavia, alcune funzionalità avanzate che permettono una manipolazione più fine e complessa dei dati, come…
- “trigger” (inneschi)
- procedure memorizzate ("stored procedures")
- routines
- e la creazione di funzioni
… non sono disponibili che su Server Cloud.
Non sono consentite sui server condivisi.
Questa limitazione è principalmente dovuta ai potenziali rischi per la stabilità dell'infrastruttura. Una configurazione errata o un uso eccessivo di queste funzionalità potrebbe creare loop 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 dump MySQL/MariaDB
Durante l'esportazione e la successiva reimportazione di un database MySQL o MariaDB tramite l'interfaccia di hosting Infomaniak, può accadere che l'operazione fallisca a causa di errori relativi ai DEFINER dei trigger o delle views. Questo caso si verifica quando gli oggetti del database sono stati creati con un utente specifico (chiamato definer) che non esiste più al momento dell'importazione.
Concretamente, il processo di esportazione e importazione utilizza un utente temporaneo, utilizzato solo durante queste operazioni. Dopo la cancellazione di questo utente, le viste o trigger definiti con questo account come DEFINER diventano invalidi, causando errori del tipo:
General error: 1449 The user specified as a definer ('xxxx_temp_1'@'%') does not existPer evitare questo problema, è possibile correggere il file di backup (dump.sql o dump.sql.gz) prima della sua importazione sostituendo le definizioni di definer con CURRENT_USER. Questo permette di associare automaticamente i trigger e le viste all'utente corrente al momento dell'importazione.
Ecco un esempio di comando che permette di modificare il dump prima dell'importazione:
sed -E 's/DEFINER=`[^`][^`]*`@`[^`][^`][^`]*`/DEFINER=CURRENT_USER/g' dump.sql > dump-corrected.sqlUna volta effettuata questa sostituzione, il file corretto può essere importato normalmente tramite il Manager Infomaniak. Questo comportamento è noto e legato al funzionamento degli utenti temporanei durante il dump/restore. Nessuna modifica del processo di esportazione/importazione è prevista a breve termine, ma l'argomento rimane in valutazione dal lato infrastrutturale.
Per ulteriori informazioni sulla variabile CURRENT_USER, consultare la documentazione ufficiale di: