tutorial español descargar definicion caracteristicas mysql

español - mysql wikipedia



Schrödingers MySQL table: existe, pero no lo hace (12)

Dudo que esta sea una respuesta directa al caso de la pregunta aquí, pero así es como resolví este problema percibido exactamente en mi sistema OS X Lion.

Frecuentemente creo / elimino tablas para algunos trabajos analíticos que he programado. En algún momento, empecé a recibir errores de tabla ya existe a mitad de camino a través de mi script. Un reinicio del servidor normalmente resolvía el problema, pero eso era demasiado molesto para una solución.

Entonces noté en el archivo de registro de errores local esta línea en particular:

[Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive

Esto me dio la idea de que tal vez si mis tablas contuvieran letras mayúsculas, se engañaría a MySQL para que pensaran que todavía están allí incluso después de que las descartara. Resultó ser el caso y cambiar a usar solo letras minúsculas para los nombres de las tablas hizo que el problema desapareciera.

Es probable que sea el resultado de una mala configuración en mi caso, pero espero que este error le ayude a alguien a perder menos tiempo tratando de encontrar una solución.

Estoy teniendo el error más extraño de todos.

A veces, al crear o alterar tablas, aparece el error ''la tabla ya existe''. Sin embargo, DROP TABLE devuelve ''# 1051 - tabla desconocida''. Así que tengo una mesa que no puedo crear, no puedo dejar caer.

Cuando trato de abandonar la base de datos, mysqld se cuelga. A veces, ayuda a crear otra base de datos con un nombre diferente, a veces no es así.

Uso un DB con ~ 50 tablas, todo InnoDB. Este problema ocurre con diferentes tablas.

Experimenté esto en Windows, Fedora y Ubuntu, MySQL 5.1 y 5.5. Mismo comportamiento, al usar PDO, PHPMyAdmin o línea de comandos. Utilizo MySQL Workbench para administrar mi esquema: vi algunos errores relacionados (líneas finales y demás), sin embargo, ninguno de ellos era relevante para mí.

No, no es una vista, es una mesa. Todos los nombres son minúsculos.

Intenté todo lo que pude hacer en google: borrar tablas, mover archivos .frm de db a db, leer el registro de MySQL, nada me ayudó pero volví a instalar toda la maldita cosa.

"Mostrar tablas" no revela nada, la tabla "describe" dice "la tabla no existe", no hay ningún archivo .frm, pero "crear tabla" aún termina con un error (y también lo hace ''crear tabla si no existe'') y dejando caer la base de datos se bloquea mysql

Preguntas relacionadas, pero inútiles:

Editar:

mysql> use askyou; Database changed mysql> show tables; Empty set (0.00 sec) mysql> create table users_has_friends (id int primary key); ERROR 1050 (42S01): Table ''`askyou`.`users_has_friends`'' already exists mysql> drop table users_has_friends; ERROR 1051 (42S02): Unknown table ''users_has_friends''

Y de todos modos, la tabla no existe, pero no puede ser creada;

mysql> drop database askyou; ERROR 2013 (HY000): Lost connection to MySQL server during query

Los nombres cambian, esta no es la única tabla / base de datos con la que he tenido problemas


En mi caso, el problema se resolvió cambiando la propiedad del directorio de datos mysql al usuario que ejecutó la aplicación. (En mi caso, era una aplicación Java que ejecutaba el servidor web Jetty).

Aunque mysql se estaba ejecutando y otras aplicaciones podrían usarlo correctamente, esta aplicación tenía un problema con eso. Después de cambiar la propiedad del directorio de datos y restablecer la contraseña del usuario, todo funcionó correctamente.


Esta es una vieja pregunta, pero me acaba de ocurrir el mismo problema y una respuesta en uno de los problemas relacionados vinculados en la parte superior era justo lo que necesitaba y mucho menos drástico que borrar archivos, tablas, cerrar el servidor, etc.

mysqladmin -uxxxxxx -pyyyyy flush-tables


Estaba teniendo este problema con una mesa en particular. Leyendo las posibles soluciones, hice algunos pasos como:

  • Buscar archivos huérfanos: no existía nadie;
  • ejecutar: show full tables in database; : no vi el problemático;
  • ejecutar: describe table; : la table doesn''t exist devuelta table doesn''t exist ;
  • execute: SELECT * FROM information_schema.TABLES WHERE TABLE_NAME=''table''; : devuelto Empty set ;
  • Busque por phpMyAdmin manualmente la consulta anterior: no existía;

Y, después de esos pasos, vuelvo a verificar con las show tables; y ... vualá! la mesa problemática había desaparecido. Podría crearlo y soltarlo con el mismo nombre problemático sin problema, ¡y ni siquiera tuve que reiniciar el servidor! Extraño...


Este problema también puede ser resuelto por

DROP TABLE IF EXISTS `tablename` ; FLUSH TABLES `tablename` ; /* or exclude `tablename` to flush all tables */ CREATE TABLE `tablename` ...


He visto este problema cuando el archivo de datos falta en el directorio de datos pero existe el archivo de definición de tabla o viceversa. Si está usando innodb_file_per_table, verifique el directorio de datos para asegurarse de tener tanto un archivo .frm como .ibd para la tabla en cuestión. Si es MYISAM, debe haber un .frm , .MYI y un archivo .MYD .

El problema generalmente se puede resolver borrando el archivo huérfano de forma manual.


La solución resulta ser fácil; al menos lo que trabajé, funcionó para mí. Cree una tabla "zzz" en otra instancia de MySQL, donde zzz es el nombre de la tabla de problemas. (es decir, si la tabla se llama schrodinger, sustitúyalo por zzz si está escrito). No importa cuál sea la definición de la tabla. Es un muñeco temporal; Copie el archivo zzz.frm al directorio de la base de datos en el servidor donde debería estar la tabla, asegurándose de que la propiedad y los permisos del archivo sigan siendo correctos en el archivo. En MySQL, ahora puede hacer "mostrar tablas", y la tabla zzz estará allí. mysql> drop table zzz; ... debería funcionar ahora Borre todos los archivos zzz.MYD o ZZZ.MYI en el directorio si es necesario.


Me encontré con este error después de crear una tabla y eliminarla, luego quería crearla de nuevo. En mi caso, tenía un archivo de volcado autónomo, así que descarté mi esquema, lo recreé y importé tablas y datos utilizando el archivo de volcado.


Si va a haber stock con este error 1051 y solo quiere borrar la base de datos e importar esto nuevamente, siga estos pasos y todo estará bien ...

en raíz del entorno AS de Unix:

  • rm -rf / var / lib / mysql / YOUR_DATABASE;
  • OPCIONAL -> mysql_upgrade --force
  • mysqlcheck -uUSER -pPASS YOUR_DATABASE
  • mysqladmin -USUARIO -pPASS drop YOUR_DATABASE
  • mysqladmin -USUARIO -pPASS crea tu_base de datos
  • mysql -UUSER -pPASS YOUR_DATABASE <IMPORT_FILE

Saludos, Christus


Sucede en nuestro sitio (pero rara vez) generalmente cuando ocurre un "evento" mientras se ejecutan ciertos scripts que hacen mucha reconstrucción. Los eventos incluyen interrupciones en la red o problemas de energía.
Lo que hago para esto en las raras ocasiones en que sucede, utilizo el enfoque de mano dura:

  • Necesitaba simplemente deshacerme de y reconstruir la tabla en particular. Por lo general, estoy en una posición de que esto está bien ya que la mesa está siendo construida. (Su situación puede ser diferente si necesita recuperar datos)
  • Como administrador, vaya a la instalación de MySQL (en Windows puede ser "... archivos de programa / mysql / MySQL Server xx / data / <schemaname>
  • Encuentre el archivo ofensivo con el nombre de la tabla en la carpeta <schemaname> y elimínelo.
  • Compruebe si hay archivos temporales huérfanos y elimínelos también. # ... archivos frm si están allí.
  • MySQL te permitirá CREAR la tabla de nuevo

He tenido este problema en un par de bases de datos diferentes durante un largo tiempo (años). Fue un obstáculo porque los mensajes contradictorios. La primera vez que hice una variación de la base de datos de eliminación / reconstrucción / cambio de nombre como se describe en las otras respuestas y logré poner en marcha las cosas, definitivamente lleva más tiempo de esa manera. Por suerte para mí, siempre ha sucedido que las tablas de referencia que se están reconstruyendo son DROP''d y CREATEd, por lo general en la mañana. Rara vez entendió el problema pero llegó a reconocerlo como un caso especial y peculiar. (Repito: si necesita recuperar los datos, mire a las otras soluciones).

  • no es una tabla que pertenece a otro usuario, o en otra base de datos
  • no es el problema de mayúsculas / minúsculas, uso todas minúsculas, ¡pero eso fue un problema interesante!
  • fue muy frustrante ver las respuestas con variaciones de "Definitivamente fue <there / not-there / some-other-user-table-case> y simplemente no lo estás haciendo bien" :)
  • la tabla no se mostró en "mostrar tablas"
  • la mesa era (siempre fue / había sido) una tabla INNODB.
  • tratando de DROP la tabla dio el mensaje de error de que la tabla no existe.
  • pero tratar de CREAR la tabla dio el mensaje de error de que la tabla ya existe.
  • usando mysql 5.0 o 5.1
  • REPARAR es ineficaz para este problema

Tenía este problema y esperaba eliminar el archivo IBD ayudaría como se publicó anteriormente, pero no hizo ninguna diferencia. MySQL solo recreó un nuevo archivo IBD. En mi caso, en realidad existen tablas similares en otras bases de datos en la misma instancia de MySQL. Como faltaba el archivo FRM, copié el archivo FRM de la tabla similar en otra base de datos, reinicié MySQL y la tabla funcionó correctamente.


Vamos a adivinar aquí, pero parece que innodb aún tiene una entrada para sus tablas en un tablespace, probablemente en ibdata . Si realmente no necesita ninguno de los datos, o si tiene copias de seguridad, intente lo siguiente:

  1. Eliminar todos los esquemas (excluyendo mysql)
  2. cerrar la base de datos
  3. Asegúrese de que todas las carpetas en su directorio de datos se hayan eliminado correctamente (nuevamente, excluyendo mysql)
  4. eliminar ibdata y archivos de registro
  5. reinicie la base de datos. Debe recrear el tablespace y los registros desde cero.