2015-01-13 7 views
17

So che sembra duplicato, ma le soluzioni che ho trovato non funzionano per me. Ho disinstallato mysql 5.1 e installato 5.6 e vorrei importare il file sql di esportazione precedente. Ma c'è qualche funzione che rende questo errore in quel file di esportazione. Ho trovato ed eseguo il comando:
../bin mysql mysql_upgrade -uroot -p --force ma se ho capito, funziona solo durante l'aggiornamento, non con l'installazione. C'è qualche soluzione per me?Impossibile caricare da mysql.proc. Il tavolo è probabilmente corrotto

Grazie!

EDIT: ho rimosso la definizione di funzione da file di importazione e l'importazione è fatto. Ma se voglio ridefinire quella funzione manualmente, mi viene mostrato lo stesso errore "impossibile caricare da mysql.proc". Funzione è qui:

DELIMITER $$ 

CREATE FUNCTION `randStr250`(length int) RETURNS varchar(250) CHARSET utf8 
begin 
    declare s varchar(250); 
    declare i tinyint; 
    set s=""; 
    if (length<1 or length>6) then 
     set s="Parameter should be in range 1-6. Your value was out of this range."; 
    else 
    set i=0; 
    while i<length do 
     set s=concat(s,sha1(now())); 
     set i=i+1; 
    end while; 
    end if; 
    return s; 
end $$ 

DELIMITER ; 
+1

Ok ho trovato questo: ** mysql \ bin mysql_upgrade.exe -u root -pxxx --force ** e funziona. –

risposta

29

avuto un problema simile dopo restorting un dump db da mysql-5.5.29 a MariaDB-5.5.41. mysql_upgrade Risolto il problema

$ mysql_upgrade -u root -pxxx 

Secondo il mysql manual,

è necessario eseguire mysql_upgrade ogni volta che si esegue l'aggiornamento di MySQL.

+2

Solo un commento per chi usa mamp, la stessa cosa vale ma mysql_upgrade non sarà nel tuo percorso quindi esegui: '/ Applicazioni/MAMP/Libreria/bin/mysql_upgrade -u root -p root' – Chris

+0

e per gli utenti Mac OS: '/ usr/local/mysql/bin/mysql_upgrade -u root -proot' –

1

La maggior parte delle persone che hanno questo problema consiglia l'aggiornamento di MySQL. Se si è in una configurazione, come me, in cui ciò accade quando si tenta di configurare un nodo SLAVE per la replica da un nodo MASTER, non si vuole veramente rovinare le versioni.

Voglio dire, nel mio caso avevo un nodo MASTER di Windows e stavo configurando un nodo SLAVE Linux (quindi, prima facevo il mysqldump dance). Poiché l'aggiornamento di MySQL è un po 'più complicato in Linux (o meglio, in realtà è meglio non farlo, per godere della stabilità dei pacchetti Linux che, ad esempio, provengono dalla tua distribuzione LTS), è forse solo una buona idea assicurarti che la versione di MySQL che hai nel tuo sistema operativo Windows sta eseguendo la stessa versione della tua versione di MySQL nel tuo SO Linux.

Una volta verificato che entrambe le versioni erano uguali, il mysqldump e il ripristino funzionavano e potevo configurare correttamente un nodo SLAVE senza ricevere l'errore terribile Cannot load from mysql.proc. The table is probably corrupted..

Spero che questo aiuti.