MySql Error 1598 (HY000) durante esecuzione script sql per importare un dump db.
Durante l’importazione di uno script sql contentente la generazione di tabelle e relativi dati la stessa viene interrotta con errore 1598 (hy000). L’operazione eseguita su Ubuntu Linux con MySql Workbench 8.x
La problematica a cui poi è stata trovata la soluzione è stata fuorviata da errori di permessi di scrittura oppure errori di I/O come quelli qui sotto riportati:
Run SQL script
Error executing SQL script.[Errno 30] Read-only file system: '/tmp/tmp9RPWH5/extraparams.cnf'
L’errore in primo piano parla di un perscorso tmp in sola lettura.
Fate però caso all’errore sottostante nella foto.
Ci hanno anche riportato il seguente errore
Auto save
Could not save content of tab Query 2. Could not save snapshot of editor contents to /home/xxx/snap/mysql-workbench-community/7/.mysql/workbench/sql_workspaces/conn_localhost-1autosave/1962ea4b-502f-11eb-a590-b7ca9df9b042.scratch: Failed to create file "/home/xxx/snap/mysql-workbench-community/7/.mysql/workbench/sql_workspaces/conn_localhost-1.autosave/1962ea4b-502f-11eb-a590-b7ca9df9b042.scratch.HNUPW0" : Read-only file system
Tutti questi errori di sistema in sola lettura possono dare l’apparenza di problematiche di installazione del software MySql Benchmark.
Inoltre dopo questi errori il Sistema Operativo (Ubuntu 20.10) non rispondeva più e infine appariva questo ulteriore errore:
[1525.246313] EXT4-fs error (device sda3): __ext4_find_entry:1535: inode #4195858: comm gdm-session wor: reading directory lblock 0 [1525.246407] Buffer I/O error on dev sda3, logical block 0, lost sync page write [1525-246450] EXT4-fs (sda3): I/O error while writing superblock
Tutti questi errori possono far pensare che la problematica sia nei permessi di lettura o scrittura o un problema al disco fisso.
Eseguendo personalmente delle prove durante l’importazione ho riscontrato i seguenti errori:
Operation failed with exitcode -7 Preparing..... Import file.sql .... Finished executing script ERROR 1598 (HY000) at line 54764: binary logging not possible. Message: An error occurred during synkc stage of the commit. 'binlog_error_action' is set to 'ABORT_SERVER'. Hence aborting the server. Operation failed with exitcode -7 [errno 30] Read-only file system: '/tmp/tmpryp4gz/extraparams.cnf'
La soluzione al problema
Il file sql di importazione era esportato da una versione MySql 5.x ed importato nella versione attuale 8.x
La problematica è sul file log_bin ovvero un registro che viene scritto sulla base delle operazioni eseguite, questo file si rende necessario per le repliche, ovvero se il database deve essere replicato altrove, oppure operazioni di ripristino.
Nella versione MySql 5.x la creazione del file di log era disabilitata per default, nelle nuove versioni attuali questa opzione è invece abilitata.
Essendo che nel caso si importava il file sql da una versione precedente si è trovato efficace optare per la disabilitazione dell’evento, ovvero la creazione del file di log (log_bin) che ha permesso la corretta importazione.
Per disabilitare la creazione del file log_bin si è proceduto ad inserire nel file sql di script la riga iniziale:
SET @@SESSION.sql_log_bin=0
Maggiori informazioni sull’opzione log_bin le troviamo sul sito ufficial edi MySql
Il Registro Binario (binary log)
Registro Binario Opzioni e variabili