Pregunta

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 me sale un 1050 "la tabla ya existe"

Pero la tabla NO existe.¿Algunas ideas?

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

DESCRIBE contenttype

rendimientos:

1146 - La 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 'tipo de contenido' ya existe

¿Fue útil?

Solución

Suena como si tuviera la mesa de Schroedinger ...

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

  • DROP TABLE IF EXISTS contenttype
  • REPAIR TABLE contenttype
  • Si tiene permisos suficientes, elimine los archivos de datos (IN / MYSQL / DATA / DB_NAME)

Otros consejos

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.

Recibí el mismo error y REPAIR TABLE (de la respuesta de @NullUserException) no ayudó.

finalmente encontré esta solución:

sudo mysqladmin flush-tables

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

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

(Se ejecuta en OS X 10.6)

Es posible que deba eliminar el caché de la mesa.Por ejemplo:

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

He estado luchando con esto todo el día:Tengo un script Perl que crea un conjunto de tablas haciendo primero un DROP IF EXISTS ... sobre ellos y luego CREATEingiéndolos.El DROP tuvo éxito, pero en CREATE Recibí este mensaje de error: table already exists

Finalmente llegué al fondo del asunto:La nueva versión de MySQL que estoy usando tiene un motor predeterminado de InnoDB ("mostrar motor \G;") Lo cambié en el archivo my.cnf para que sea MyISAM predeterminado, reinicié MySQL y ahora ya no obtengo el error "la tabla ya existe".

El mismo problema ocurrió conmigo mientras creas una vista. La vista estuvo presente antes, entonces debido a algunos cambios que se eliminó, pero cuando intenté agregarlo de nuevo, me mostraba el mensaje de error "Ver ya existe".

solución :

puedes hacer una cosa manualmente.

  1. Vaya a la carpeta MySQL donde lo ha instalado
  2. Vaya a la carpeta de datos dentro de ella.
  3. Elija su base de datos e ingrese dentro de él.
  4. La base de datos crea archivos de formato ".FRM".
  5. Eliminar el archivo de la tabla en particular.
  6. Ahora crea la tabla otra vez.
  7. creará la tabla con éxito.

Encontrando el mismo problema (crear una tabla InnoDB) Esto es lo que finalmente funcionó para mí:

DROP DATABASE `having_issues`;

Revisé una base de archivos, permisos, intenté reparar y al enjuagar, pero nada funcionó.

Por lo tanto, si es una opción, mueva todas las tablas de trabajo a otra base de datos, suelte el viejo (es posible que tenga que eliminar manualmente los archivos de la carpeta de la base de datos antes de la caída al trabajo) , renombrarEl nuevo, y usted 'debería estar de vuelta en su camino.Aparentemente, lo que sea que reciba "almacenado en caché" usando InnoDB se retira junto con la base de datos original.

Tuve este problema en Win7 en SQL Maestro para MySQL 12.3.Enormemente irritante, un tapón de espectáculo 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 ser relacionados con los permisos WIN7.Así que corrí a MySQL como administrador y a pesar de que SQL Maestro se ejecutó normalmente, el error desapareció.Por lo tanto, debe haber sido un problema de permisos entre Win7 y MySQL.

También encontré este problema donde tratar de crear una mesa, ya que existe y abandona la mesa, dijo que no existía.

Hice "Tablas de descarga" y aclaró el problema.

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 desde 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 copia de seguridad de todos mis archivos. CREATEs fueron almacenados (un archivo sqldump).

Primero comprueba si estás en la base de datos correcta. USE yourDB y prueba Select * from contenttype solo para ver que es y si realmente existe...

Tuve el mismo problema en Mac OS X y MySQL 5.1.40.Utilicé Eclipse para editar mi script de SQL y que probé MySqlWorkBench 5.2.28.Probablemente haya convertido caracteres de nueva línea a Mac Format.No tenía idea de lo que está mal con mi guión hasta que comenté la primera línea en el archivo.Después de esto, MySQL interpretó este script como un solo comentario.Utilicé la aplicación MAC de Strip-in TEXTEDIT para arreglar esto.Después de que las salidas de línea se convirtieron en el formato correcto, el error 1050 se ha ido.

Actualizar para usuarios de Eclipse:

Para configurar el final predeterminado para nuevos archivos creados, en todo el espacio de trabajo:

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

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

Archivo -> Convertir delimitadores de línea a

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, necesario para ser:

-rw-rw----   3 _mysql  wheel 

perdón de resucitar.

Estaba teniendo grandes problemas con los errores 1050 y 150.

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

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

Lamentablemente, los mensajes de error de MySql no son de ninguna ayuda, por lo que tuve que encontrar esta solución de forma iterativa y con la ayuda de las respuestas a la pregunta anterior.

I had this same problem and it looks like the Database name was case sensitive. My Database is called:

Mydatabase

Whilst my script included

USE mydatabase

Once I changed the database name to the correct case it all seemed to work. Using MYSQL Workbench on MAC OSX

This problem also occurs if a 'view' (imaginary table) exists in database as same name as our new table name.

In my case I found this to be an issue with InnoDB; I never discovered what the actual problem was, but creating as a MyISAM allowed it to build

For me the problem was caused when using a filesystem copy of the mysql database directory instead of mysqldump. I have some very large tables, mostly MyISAM and a few InnoDB cache tables and it is not practical to mysqldump the data. Since we are still running MyISAM, XtraBackup is not an option.

The same symptoms as above happened to me. The table is not there, there are no files in the directory that pertain to the table, yet it cannot be created because MySQL thinks its there. Drop table says it's not there, create table says it is.

The problem occurred on two machines, both were fixed by copying backups. However, I noticed that in my backup that there was a .MYD and .MYI file, even though I was under the impression that these files are not used for InnoDB. The .MYD and .MYI files had an owner of root, while the .frm was owned by mysql.

If you copy from backup, check the file permissions. Flush tables might work, but I opted to shut down and restart the database.

Good luck.

gosh, i had the same problem with osCommerce install script until i figured out the mysql system has many databases and the create table query copies itself into each one and thus droping only the working table on active db didnt help, i had to drop the table from all dbs

My CREATE statement was part of staging env dump.

I did try everything that has been mentioned above. I DID NOT get solution. However my path to redemption was:

  1. I stumble upon the fact that (one of many in) the CREATE statement did get through when I rectified the database name case sensitivity. This clicked something. I repeated the same for the other tables.

  2. However a new error came into the scene. The straight quotes for 'comments' were throwing syntax error. I was shocked. replaced them but the new error started popping up. Finally i knew the solution.

SOLUTION: The dump i was using might have been from a different version of MySql. I got permission to connect to the staging MYsql using the local(installed on my machine) mysql workbench. I did not rdp into the staging server to login to staging mysql workbench. Created a dump from there. Ran the dump and it worked like a sweet.

Was trying to import a backup sql file but was getting the error; 1050 "Table already exists"

My setup was:

  • Windows 7
  • Mysql 5.5.16

Solution:

  1. Changed the server engine from InnoDB to MyISAM
  2. Using phpMyAdmin Deleted the database I was trying to import to
  3. Restarted the mysql service
  4. Tried the re-importation and it worked

Your disk also might just be full. (just had that)

In my case the problem was that there was a view with the same name as my table, so I had to drop the view to allow the import to continue.

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

An automated solution that worked for me is to replace the normal drop table with this sed during the dump to also drop any views that might exist:

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

Or if you would rather print to a file for backup

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

Or if you received the dumped file and you are importing it to your db

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

You get the idea

Note: it is important that you add the ^ at the beginning of the replacement regex, because there are other types of DROP TABLE IF EXISTS commands in dumps that you don't want to touch.

You go from having something like this:

--
-- 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` (
...

To having something like this:

--
-- 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` (
...

You won´t believe me! I´ve just removed a comment block from my .sql file and now it works.

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;

The deleted comment block was this:

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

I´ve left the problematic table alone in the same .sql file. After that I´ve removed comments, the only code was left, and the error disappears.

I've just had the same error but I knew the table already existed and wanted to add to it. I'm adding my answer as this question comes up as no.1 for me on google when looking for the same error but for a slightly different scenario. Basically I needed to tick

"Add DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER statement"

And this solved the error for me.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top