solucion - mysql error 1812
MySQL "CREAR TABLA SI NO EXISTE"-> Error 1050 (7)
Usando el comando:
CREATE TABLE IF NOT EXISTS `test`.`t1` (
`col` VARCHAR(16) NOT NULL
) ENGINE=MEMORY;
Ejecutando esto dos veces en el navegador MySQL Query resultados en:
La tabla ''t1'' ya existe Error 1050
Hubiera pensado que crear la tabla "SI NO EXISTE" no arrojaría errores. ¿Me estoy perdiendo algo o es esto un error? Estoy ejecutando la versión 5.1 . Gracias.
Como ya se dijo, es una advertencia, no un error, pero (si me gusta) desea que las cosas funcionen sin advertencias, puede desactivar esa advertencia, luego volver a habilitarla cuando haya terminado.
SET sql_notes = 0; -- Temporarily disable the "Table already exists" warning
CREATE TABLE IF NOT EXISTS ...
SET sql_notes = 1; -- And then re-enable the warning again
Crea una conexión mysql con el siguiente parámetro. "''raise_on_warnings'': False". Ignorará la advertencia. p.ej
config = {''user'': ''user'',''password'': ''passwd'',''host'': ''localhost'',''database'': ''db'', ''raise_on_warnings'': False,}
cnx = mysql.connector.connect(**config)
Funciona bien para mí en 5.0.27
Acabo de recibir una advertencia (no un error) de que la tabla existe;
Puede usar la siguiente consulta para crear una tabla en una base de datos particular en MySql.
create database if not exists `test`;
USE `test`;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
/*Table structure for table `test` */
CREATE TABLE IF NOT EXISTS `tblsample` (
`id` int(11) NOT NULL auto_increment,
`recid` int(11) NOT NULL default ''0'',
`cvfilename` varchar(250) NOT NULL default '''',
`cvpagenumber` int(11) NULL,
`cilineno` int(11) NULL,
`batchname` varchar(100) NOT NULL default '''',
`type` varchar(20) NOT NULL default '''',
`data` varchar(100) NOT NULL default '''',
PRIMARY KEY (`id`)
);
Tengo una solución a un problema que también puede aplicarse a usted. Mi base de datos se encontraba en un estado en el que una DROP TABLE
falló porque no pudo encontrar la tabla ... pero CREATE TABLE
también falló porque MySQL pensó que la tabla existía. (Este estado podría interferir fácilmente con su cláusula IF NOT EXISTS).
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)
Tuve un problema similar al de @CraigWalker en debian: mi base de datos estaba en un estado en el que una DROP TABLE
falló porque no pudo encontrar la tabla, pero CREATE TABLE
también falló porque MySQL pensó que la tabla aún existía. Entonces, la mesa rota aún existía en algún lado, aunque no estaba allí cuando miré en phpmyadmin.
Creé este estado simplemente copiando toda la carpeta que contenía una base de datos con algunas MyISAM
y algunas tablas InnoDB
cp -a /var/lib/mysql/sometable /var/lib/mysql/test
(¡esto no es recomendado!)
Todas las tablas de InnoDB no están visibles en la nueva test
base de datos en phpmyadmin.
sudo mysqladmin flush-tables
tampoco ayudó.
Mi solución: tuve que eliminar la nueva base de drop database test
con la prueba de la base de drop database test
y copiarla con mysqldump
:
mysqldump somedatabase -u username -p -r export.sql
mysql test -u username -p < export.sql
create database if not exists `test`;
USE `test`;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
/*Table structure for table `test` */
***CREATE TABLE IF NOT EXISTS `tblsample` (
`id` int(11) NOT NULL auto_increment,
`recid` int(11) NOT NULL default ''0'',
`cvfilename` varchar(250) NOT NULL default '''',
`cvpagenumber` int(11) NULL,
`cilineno` int(11) NULL,
`batchname` varchar(100) NOT NULL default '''',
`type` varchar(20) NOT NULL default '''',
`data` varchar(100) NOT NULL default '''',
PRIMARY KEY (`id`)
);***