2012-07-09 8 views
9

Tengo una tabla en mysql con el motor de almacenamiento MyISAM. que quieren crear particiones en una tabla en particular, para este Estoy ejecutando la consulta -# 1016 - No se puede abrir el archivo: './database_name/#sql-38f_36aa.frm' (errno: 24)

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

Dónde stop_id 'es el tipo de varchar. Mientras ejecuto la consulta anterior recibo el error:

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

¿Alguien me puede ayudar a resolver este problema?

Gracias.

Respuesta

17

De here y here.

errno: 24 significa que hay demasiados archivos abiertos para el proceso dado. Hay una variable MySQL de sólo lectura llamado 'open_files_limit' que mostrará el número de archivos abiertos están permitidos por el mysqld:

SHOW VARIABLES LIKE 'open%'; 

A sistemas porción Sistema esto a algo muy bajo, como 1024. Por desgracia, el siguiente no funcionará:

SET open_files_limit = 100000

MySQL responderá con:

ERROR 1238 (HY000): open_files_limit variable' 'es una variable de solo lectura

Sin embargo, es posible realizar un cambio en /etc/my.cnf. Este archivo puede no existe, si no, simplemente créelo. Asegúrese de que tiene los siguientes contenidos:

[mysqld]

open-files-limit = 100000 

A continuación, asegúrese de reiniciar mysql:

sudo /etc/init.d/mysql reiniciar

Ahora , MOSTRAR VARIABLES COMO '% abierto' debe mostrar 100000. El número que usa puede ser diferente.

+0

Gracias Jacob, me ayuda mucho – Deepu

+2

Nota, para Debian, el archivo se encuentra en '/ etc/mysql/my.cnf' y la variable' open_files_limit' no está allí. Solo agrégalo debajo de la sección '[mysqld]'. – Mike

+0

Lo mismo ocurre con mi Ubuntu 12.04 LTS. El archivo se encuentra en '/ etc/mysql/my.cnf' y' open_files_limit' no está allí. –

Cuestiones relacionadas