Suponiendo que se ha instalado MySQL y se editó el fichero de opciones
para que contenga los parámetros de InnoDB
necesarios,
antes de iniciar MySQL se debería verificar que los directorios indicados
para los ficheros de datos y de registro (log) InnoDB
existen y que el servidor MySQL tiene permisos de acceso a dichos
directorios. InnoDB
no puede crear directorios,
solamente ficheros. Hay que verificar también que se tiene suficiente
espacio en disco para los ficheros de datos y de registro.
Cuando se crea una base de datos InnoDB
, es mejor
ejecutar el servidor MySQL mysqld desde la línea de
comandos, no desde el envoltorio mysqld_safe o como
un servicio de Windows. Cuando se lo ejecuta desde la línea de comandos,
se puede ver lo que mysqld imprime y qué está
ocurriendo. En Unix, simplemente debe invocarse mysqld.
En Windows, hay que usar la opción --console
.
Cuando se inicia el servidor MySQL luego de la configuración inicial de
InnoDB
en el fichero de opciones,
InnoDB
crea los ficheros de datos y de registro e
imprime algo como lo siguiente:
InnoDB: The first specified datafile /home/heikki/data/ibdata1 did not exist: InnoDB: a new database to be created! InnoDB: Setting file /home/heikki/data/ibdata1 size to 134217728 InnoDB: Database physically writes the file full: wait... InnoDB: datafile /home/heikki/data/ibdata2 did not exist: new to be created InnoDB: Setting file /home/heikki/data/ibdata2 size to 262144000 InnoDB: Database physically writes the file full: wait... InnoDB: Log file /home/heikki/data/logs/ib_logfile0 did not exist: new to be created InnoDB: Setting log file /home/heikki/data/logs/ib_logfile0 size to 5242880 InnoDB: Log file /home/heikki/data/logs/ib_logfile1 did not exist: new to be created InnoDB: Setting log file /home/heikki/data/logs/ib_logfile1 size to 5242880 InnoDB: Doublewrite buffer not found: creating new InnoDB: Doublewrite buffer created InnoDB: Creating foreign key constraint system tables InnoDB: Foreign key constraint system tables created InnoDB: Started mysqld: ready for connections
Se ha creado una nueva base de datos InnoDB
. Se puede
conectar al servidor MySQL con los programas cliente acostumbrados, como
mysql. Cuando se detiene el servidor MySQL, con
mysqladmin shutdown, la salida es como la siguiente:
010321 18:33:34 mysqld: Normal shutdown 010321 18:33:34 mysqld: Shutdown Complete InnoDB: Starting shutdown... InnoDB: Shutdown completed
Se puede mirar en los directorios de ficheros de datos y registro y se
verán los ficheros creados. El directorio de registro (log) también
contiene un pequeño fichero llamado
ib_arch_log_0000000000
. Ese fichero resulta de la
creación de la base de datos, luego de lo cual InnoDB
desactivó el guardado de registros (log). Cuando MySQL inicia de nuevo,
los ficheros de datos y de registro ya han sido creados, por lo que la
salida es más breve:
InnoDB: Started mysqld: ready for connections
Es posible agregar la opción innodb_file_per_table
a
my.cnf
, y hacer que InnoDB almacene cada tabla en su
propio fichero .ibd
en un directorio de bases de
datos de MySQL. Consulte Sección 15.6.6, “Usar un espacio de tablas para cada tabla”.
Si InnoDB
imprime un error de sistema operativo en
una operación de ficheros, generalmente el problema es uno de los
siguientes:
-
No se creó el directorio para los ficheros de datos o de registros (log) de
InnoDB
. -
mysqld no tiene los permisos de acceso para crear ficheros en aquellos directorios.
-
mysqld no puede leer el fichero de opciones
my.cnf
omy.ini
adecuado, y por lo tanto no ve las opciones especificadas. -
El disco está lleno o se excedió la cuota de disco.
-
Se ha creado un subdirectorio que tiene el mismo nombre que uno de los ficheros de datos especificados.
-
Hay un error de sintaxis en
innodb_data_home_dir
oinnodb_data_file_path
.
Si algo va mal durante el intento de InnoDB
de
inicializar el espacio de tablas o los ficheros de registro, se deberán
borrar todos los ficheros creados por InnoDB
. Esto
comprende todos los ficheros ibdata
y todos los
ib_logfile
. En caso de haber creado alguna tabla
InnoDB
, habrá que borrar del directorio de datos de MySQL
los correspondientes
ficheros .frm
de estas tablas (y cualquier fichero
.ibd
si se están empleando múltiples espacios de
tablas). Entonces puede intentarse nuevamente la creación de la base de
datos InnoDB
. Es mejor iniciar el servidor MySQL
desde una línea de comandos de modo que pueda verse lo que ocurre.