2012-07-09 10 views
9

Ho una tabella in mysql con il motore di archiviazione MyISAM. Voglio creare partizione su una particolare tabella, per questo sto eseguendo la query -# 1016 - Impossibile aprire il file: './database_name/#sql-38f_36aa.frm' (errno: 24)

alter table Stops PARTITION BY KEY(`stop_id`) PARTITIONS 200 

Dove 'stop_id' è di tipo varchar. Durante l'esecuzione della query sopra viene visualizzato l'errore -

#1016 - Can't open file: './database_name/#sql-38f_36aa.frm' (errno: 24) 

Qualcuno può aiutarmi a risolvere questo problema?

Grazie.

risposta

17

Da here e here.

errno: 24 significa che troppi file sono aperti per il processo specificato. C'è una variabile di sola lettura mysql chiama 'open_files_limit' che mostrerà il numero di file aperti sono autorizzati dal mysqld:

SHOW VARIABLES LIKE 'open%'; 

A sistemi lotto impostare questo a qualcosa di molto basso, come 1024. Purtroppo, Quanto segue non funzionerà:

SET open_files_limit = 100000

MySQL risponde con:

ERRORE 1238 (HY000): open_files_limit variabile' 'è una variabile di sola lettura variabile

Tuttavia, è possibile apportare una modifica a /etc/my.cnf. Questo file potrebbe non esistere , in caso contrario, basta crearlo. Assicurarsi che ha le seguenti contenuti:

[mysqld]

open-files-limit = 100000 

Quindi, assicurarsi di riavviare mysql:

sudo /etc/init.d/mysql restart

Ora , MOSTRA VARIABILI COME 'open%' dovrebbe mostrare 100000. Il numero che usi potrebbe essere diverso.

+0

Grazie Jacob, mi aiuta molto – Deepu

+2

Nota, per Debian, il file si trova in '/ etc/mysql/my.cnf' e la variabile' open_files_limit' non c'è. Basta aggiungerlo sotto la sezione '[mysqld]'. – Mike

+0

Lo stesso vale per la mia Ubuntu 12.04 LTS. Il file si trova in '/ etc/mysql/my.cnf' e' open_files_limit' non c'è. –