wp_commentmeta hy000 has for error documentación discarded discard dicho been already mysql sql mysql-error-1146 mysql-error-1050

hy000 - mysql error 1812



Mysql 1050 Error "La tabla ya existe" cuando, de hecho, no (24)

¡No me creerás! Acabo de eliminar un bloque de comentarios de mi archivo .sql y ahora funciona !!!!!!!

CREATE DATABASE IF NOT EXISTS `issga` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `issga`; -- -- Table structure for table `protocolo` -- DROP TABLE IF EXISTS protocolo; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE protocolo ( `idProtocolo` int(11) NOT NULL AUTO_INCREMENT, `tipo` varchar(30) DEFAULT NULL, `estado` int(2) DEFAULT 0, PRIMARY KEY (`idProtocolo`) ) ENGINE=InnoDB AUTO_INCREMENT=142 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `protocolo` -- LOCK TABLES protocolo WRITE; /*!40000 ALTER TABLE protocolo DISABLE KEYS */; /* INSERT INTO `protocolo` VALUES () */ /*!40000 ALTER TABLE protocolo ENABLE KEYS */; UNLOCK TABLES;

El bloque de comentarios eliminado fue este:

-- -- Table structure for table `protocolo` --

He dejado la tabla problemática sola en el mismo archivo .sql. Después de eso, eliminé los comentarios, solo se dejó el código y el error desaparece.

Estoy agregando esta tabla:

CREATE TABLE contenttype ( contenttypeid INT UNSIGNED NOT NULL AUTO_INCREMENT, class VARBINARY(50) NOT NULL, packageid INT UNSIGNED NOT NULL, canplace ENUM(''0'',''1'') NOT NULL DEFAULT ''0'', cansearch ENUM(''0'',''1'') NOT NULL DEFAULT ''0'', cantag ENUM(''0'',''1'') DEFAULT ''0'', canattach ENUM(''0'',''1'') DEFAULT ''0'', isaggregator ENUM(''0'', ''1'') NOT NULL DEFAULT ''0'', PRIMARY KEY (contenttypeid), UNIQUE KEY packageclass (packageid, class) );

Y tengo una mesa de 1050 "ya existe"

Pero la mesa NO existe. ¿Algunas ideas?

EDITAR: más detalles porque todos parecen no creerme :)

DESCRIBE contenttype

rendimientos:

1146 - Tabla ''gunzfact_vbforumdb.contenttype'' no existe

y

CREATE TABLE gunzfact_vbforumdb.contenttype( contenttypeid INT UNSIGNED NOT NULL AUTO_INCREMENT , class VARBINARY( 50 ) NOT NULL , packageid INT UNSIGNED NOT NULL , canplace ENUM( ''0'', ''1'' ) NOT NULL DEFAULT ''0'', cansearch ENUM( ''0'', ''1'' ) NOT NULL DEFAULT ''0'', cantag ENUM( ''0'', ''1'' ) DEFAULT ''0'', canattach ENUM( ''0'', ''1'' ) DEFAULT ''0'', isaggregator ENUM( ''0'', ''1'' ) NOT NULL DEFAULT ''0'', PRIMARY KEY ( contenttypeid ) ,

Rendimientos:

1050 - La tabla ''contenttype'' ya existe


Al encontrar el mismo problema (crear una tabla InnoDB) esto es lo que finalmente funcionó para mí:

DROP DATABASE `having_issues`;

Comprobé en base a archivos, permisos, intenté REPARAR y ENJUAGAR pero nada funcionó.

Entonces, si esta es una opción, mueva todas las tablas de trabajo a otra BASE DE DATOS, descarte la anterior (puede que tenga que eliminar manualmente cualquier archivo de la carpeta de la base de datos antes de que la gota funcione) , cambie el nombre a la nueva y ''debería'' de vuelta en tu camino. Aparentemente, todo lo que se ''almacena en caché'' usando InnoDB se descarta junto con la base de datos original.


Dios mío, tuve el mismo problema con el script de instalación de osCommerce hasta que descubrí que el sistema mysql tiene muchas bases de datos y la consulta create table copia en cada una de ellas y, por lo tanto, caigo solo la tabla de trabajo en db no me ayudó. Tuve que soltar la tabla de todos los DB


El mismo problema ocurrió conmigo al crear una vista. La vista estaba presente antes debido a algunos cambios que se eliminaron. Pero cuando traté de volver a agregarla, me estaba mostrando el mensaje de error "la vista ya existe".

Solución :

Puedes hacer una cosa manualmente.

  1. Ve a la carpeta MySQL donde lo has instalado
  2. Ve a la carpeta de datos dentro de él.
  3. Elija su base de datos y entre en ella.
  4. La base de datos crea archivos de formato ".frm".
  5. eliminar el archivo de la tabla en particular.
  6. Ahora crea la tabla de nuevo.

Creará la tabla con éxito.


En mi caso, el problema era que había una vista con el mismo nombre que mi tabla, así que tuve que soltar la vista para permitir que la importación continúe.

drop view `my-view-that-has-same-name-as-table`;

Una solución automatizada que funcionó para mí es reemplazar la tabla de caída normal con este sed durante el volcado para también eliminar cualquier vista que pueda existir:

mysqldump my-db / | sed -E ''s/^DROP TABLE IF EXISTS(.+)$//0 DROP VIEW IF EXISTS/1/g'' / | mysql my-other-db

O si prefiere imprimir en un archivo para hacer una copia de seguridad

mysqldump my-db / | sed -E ''s/^DROP TABLE IF EXISTS(.+)$//0 DROP VIEW IF EXISTS/1/g'' / > my-db.dump.sql

O si recibió el archivo volcado y lo está importando a su db

cat my-db.dump.sql / | sed -E ''s/^DROP TABLE IF EXISTS(.+)$//0 DROP VIEW IF EXISTS/1/g'' / | mysql my-other-db

Usted obtiene la idea

Nota: es importante que agregue ^ al comienzo de la expresión regular de reemplazo, porque hay otros tipos de comandos DROP TABLE IF EXISTS en los volcados que no desea tocar.

Vas de tener algo como esto:

-- -- Table structure for table `my_table` -- DROP TABLE IF EXISTS `my_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `my_table` ( ...

Tener algo como esto:

-- -- Table structure for table `my_table` -- DROP TABLE IF EXISTS `my_table`; DROP VIEW IF EXISTS `my_table`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `my_table` ( ...


En mi caso, me pareció un problema con InnoDB; Nunca descubrí cuál era el verdadero problema, pero crearlo como MyISAM me permitió construirlo


Es posible que necesite vaciar la memoria caché de la tabla. Por ejemplo:

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


Estaba teniendo grandes problemas con el Error 1050 y 150.

El problema, para mí, fue que estaba tratando de agregar una restricción con ON DELETE SET NULL como una de las condiciones.

Cambiar a ON DELETE NO ACTION me permitió agregar las restricciones FK requeridas.

Desafortunadamente, los mensajes de error de MySql son completamente inútiles, así que tuve que encontrar esta solución de forma iterativa y con la ayuda de las respuestas a la pregunta anterior.


Estaba tratando de importar un archivo sql de copia de seguridad, pero estaba recibiendo el error; 1050 "La tabla ya existe"

Mi configuración fue:

  • Windows 7
  • Mysql 5.5.16

Solución:

  1. Cambió el motor del servidor de InnoDB a MyISAM
  2. Usando phpMyAdmin borré la base de datos que estaba tratando de importar
  3. Reinició el servicio de mysql
  4. Intentó la reimportación y funcionó

Este problema también ocurre si existe una ''vista'' (tabla imaginaria) en la base de datos con el mismo nombre que nuestro nuevo nombre de tabla.


Estoy luchando con el mismo problema. No puedo crear una tabla, aunque no exista. Probé todas las soluciones anteriores sin éxito.

Mi solución fue eliminar los archivos ib_logfil0 , ib_logfile1 , ibdata1 y auto.cnf de la carpeta de datos de MySQL; asegúrese de detener el servicio MySQL primero antes de eliminar estos archivos.

Luego, después de reiniciar el servicio, MySQL recreó estos archivos y pude ejecutar un script de respaldo cuando todos mis CREATE s fueron almacenados (un archivo sqldump).


He estado luchando con esto todo el día: tengo un script de Perl que construye un conjunto de tablas al hacer primero un DROP IF EXISTS ... sobre ellas y luego CREATE . El DROP tuvo éxito, pero en CREATE obtuve este mensaje de error: la table already exists

Finalmente llegué al fondo del asunto: la nueva versión de MySQL que estoy usando tiene un motor predeterminado de InnoDB ("show engine / G;") Lo cambié en el archivo my.cnf por defecto a MyISAM, inició MySQL, y ahora ya no aparece el error "la tabla ya existe".


Mi declaración CREATE fue parte de staging env dump.

Probé todo lo que se ha mencionado anteriormente. NO TENGO SOLUCION Sin embargo, mi camino a la redención fue:

  1. Me tropiezo con el hecho de que (una de muchas en) la sentencia CREATE sí se transmitió cuando rectifiqué la sensibilidad de mayúsculas y minúsculas del nombre de la base de datos. Esto hizo clic en algo. Repetí lo mismo para las otras mesas.

  2. Sin embargo, un nuevo error entró en escena. Las citas rectas de ''comentarios'' arrojaban un error de sintaxis. Me quedé impactado. los reemplazó pero el nuevo error comenzó a aparecer. Finalmente supe la solución.

SOLUCIÓN: El volcado que estaba usando podría haber sido de una versión diferente de MySql. Obtuve permiso para conectarme a la puesta en escena de MYsql usando el banco de trabajo local (instalado en mi máquina) mysql. No ingresé al servidor intermedio para iniciar sesión en la puesta en escena de mysql workbench. Creó un basurero desde allí. Corrió el tugurio y funcionó como un dulce.


Obtuve el mismo error, y REPAIR TABLE (de la respuesta de @ NullUserException) no me ayudó.

Finalmente encontré esta solución :

sudo mysqladmin flush-tables

Para mí, sin el sudo , recibí el siguiente error:

mysqladmin: refresh failed; error: ''Access denied; you need the RELOAD privilege for this operation''

(Se ejecuta en OS X 10.6)


Para mí, el problema fue causado al usar una copia del sistema de archivos del directorio de base de datos mysql en lugar de mysqldump. Tengo algunas tablas muy grandes, en su mayoría MyISAM y algunas tablas de caché InnoDB y no es práctico para mysqldump los datos. Como todavía estamos ejecutando MyISAM, XtraBackup no es una opción.

Los mismos síntomas que antes me pasaron a mí. La tabla no está allí, no hay archivos en el directorio que pertenecen a la tabla, pero no se puede crear porque MySQL cree que está ahí. Drop table dice que no está allí, create table dice que sí.

El problema ocurrió en dos máquinas, ambas se corrigieron copiando copias de seguridad. Sin embargo, noté que en mi copia de seguridad había un archivo .MYD y .MYI, aunque tenía la impresión de que estos archivos no se usaban para InnoDB. Los archivos .MYD y .MYI tenían un propietario de raíz, mientras que .frm era propiedad de mysql.

Si copia de la copia de seguridad, verifique los permisos del archivo. Las tablas de rubor podrían funcionar, pero opté por cerrar y reiniciar la base de datos.

Buena suerte.


Parece que tienes la mesa de Schroedinger ...

En serio ahora, probablemente tengas una mesa rota. Tratar:

  • DROP TABLE IF EXISTS contenttype
  • REPAIR TABLE contenttype
  • Si tiene suficientes permisos, elimine los archivos de datos (en / mysql / data / db_name)

Primero compruebe si se encuentra en la base de datos correcta USE yourDB y pruebe Select * from contenttype solo para ver qué es y si realmente existe ...


Su disco también podría estar lleno. (solo tenía eso)


También encontré este problema cuando tratar de crear una tabla decía que ya existe y al dejar caer la tabla decía que no existía.

Hice "FLUSH TABLES" y solucionó el problema.


Tuve el mismo problema en Mac OS X y MySQL 5.1.40. Usé eclipse para editar mi script SQL y luego probé MySQLWorkbench 5.2.28. Probablemente convirtió caracteres de nueva línea al formato Mac. No tenía idea de qué pasaba con mi script hasta que comente la primera línea del archivo. Después de esto, este script fue interpretado por mysql como un único comentario. Utilicé la aplicación incorporada TextEdit Mac para arreglar esto. Después de que los saltos de línea se convirtieron al formato correcto, el error 1050 desapareció.

Actualización para usuarios de Eclipse:

Para configurar la finalización predeterminada para los nuevos archivos creados, en todo el espacio de trabajo:

Ventana -> Preferencias -> General -> Espacio de trabajo -> Nuevo delimitador de línea de archivo de texto.

Para convertir archivos existentes, abrir archivo para editar y para el archivo editado actualmente, vaya al menú:

Archivo -> Convertir delimitadores de línea a


Tuve el mismo problema y parece que el nombre de la base de datos distingue entre mayúsculas y minúsculas. Mi base de datos se llama:

Mydatabase

Mientras mi guion incluía

USE mydatabase

Una vez que cambié el nombre de la base de datos al caso correcto, todo pareció funcionar. Usar MYSQL Workbench en MAC OSX


Tuve este mismo caso. El problema terminó siendo permisos en el directorio principal.

He estado copiando archivos dentro y fuera de mysql durante las pruebas.

drwx------ 3 _mysql wheel

no fue suficiente, necesitaba ser:

-rw-rw---- 3 _mysql wheel

Perdón por resucitar.


Tuve este problema en Win7 en Sql Maestro para MySql 12.3. Enormemente irritante, un show stopper de hecho. Nada ayudó, ni siquiera cayendo y recreando la base de datos. Tengo la misma configuración en XP y funciona allí, así que después de leer sus respuestas sobre los permisos, me di cuenta de que deben estar relacionados con los permisos Win7. Así que ejecuté MySql como administrador y aunque Sql Maestro se ejecutó normalmente, el error desapareció. Por lo tanto, debe haber sido un problema de permisos entre Win7 y MySql.


del registro de MySQL:

InnoDB: You can drop the orphaned table inside InnoDB by InnoDB: creating an InnoDB table with the same name in another InnoDB: database and copying the .frm file to the current database. InnoDB: Then MySQL thinks the table exists, and DROP TABLE will InnoDB: succeed.