Verwenden des Befehls:
CREATE TABLE IF NOT EXISTS `test`.`t1` (
`col` VARCHAR(16) NOT NULL
) ENGINE=MEMORY;
Wenn Sie dies zweimal im MySQL Query Browser ausführen, erhalten Sie Folgendes:
Tabelle 't1' existiert bereits Fehler 1050
Ich hätte gedacht, dass das Erstellen der Tabelle "IF NOT EXISTS" keine Fehler auslösen würde. Vermisse ich etwas oder ist das ein Fehler? Ich verwende Version 5.1 . Vielen Dank.
sql
mysql
mysql-error-1050
user199559
quelle
quelle
Wie bereits erwähnt, handelt es sich um eine Warnung, nicht um einen Fehler. Wenn Sie jedoch möchten, dass die Dinge ohne Warnungen ausgeführt werden, können Sie diese Warnung deaktivieren und anschließend wieder aktivieren, wenn Sie fertig sind.
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
quelle
Mit der folgenden Abfrage können Sie eine Tabelle für eine bestimmte Datenbank in MySql erstellen.
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`) );
quelle
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`) );***
quelle
Ich habe eine Lösung für ein Problem, das möglicherweise auch für Sie gilt. Meine Datenbank befand sich in einem Zustand, in dem ein
DROP TABLE
Fehler aufgetreten ist, weil die Tabelle nicht gefunden werden konnte ... aber aCREATE TABLE
auch ein Fehler, weil MySQL glaubte, dass die Tabelle vorhanden ist. (Dieser Status kann leicht mit Ihrer IF NOT EXISTS-Klausel in Konflikt geraten.)Ich fand schließlich diese Lösung :
sudo mysqladmin flush-tables
Für mich ohne das habe
sudo
ich folgenden Fehler bekommen:(Läuft unter OS X 10.6)
quelle
Erstellen Sie eine MySQL-Verbindung mit dem folgenden Parameter. "'raise_on_warnings': False". Die Warnung wird ignoriert. z.B
quelle
IF NOT EXISTS
.Ich hatte ein ähnliches Problem wie @CraigWalker unter Debian: Meine Datenbank befand sich in einem Zustand, in dem ein Fehler aufgetreten ist,
DROP TABLE
weil die Tabelle nicht gefunden werden konnte, aber auch ein Fehler ,CREATE TABLE
weil MySQL glaubte, dass die Tabelle noch vorhanden ist. Der kaputte Tisch existierte also noch irgendwo, obwohl er nicht da war, als ich in phpmyadmin nachschaute.Ich habe diesen Status erstellt, indem ich einfach den gesamten Ordner kopiert habe, der eine Datenbank mit einigen
MyISAM
und einigenInnoDB
Tabellen enthielt(Dies wird nicht empfohlen!)
Alle InnoDB-Tabellen waren in der neuen Datenbank
test
in phpmyadmin nicht sichtbar .sudo mysqladmin flush-tables
hat auch nicht geholfen.Meine Lösung: Ich musste die neue Testdatenbank mit löschen
drop database test
undmysqldump
stattdessen kopieren mit :quelle
Nun, es gibt bereits viele Antworten und viele machen auch Sinn.
Einige erwähnten, es sei nur eine Warnung, andere gaben eine vorübergehende Möglichkeit, Warnungen zu deaktivieren. All dies funktioniert, erhöht jedoch das Risiko, wenn die Anzahl der Transaktionen in Ihrer Datenbank hoch ist .
Ich bin heute auf eine ähnliche Situation gestoßen und hier ist die Frage, die ich mir gestellt habe ...
declare begin execute immediate ' create table "TBL" ("ID" number not null)'; exception when others then if SQLCODE = -955 then null; else raise; end if; end; /
Dies ist einfach. Wenn beim Ausführen der Abfrage eine Ausnahme auftritt, wird diese unterdrückt. und Sie können das gleiche für
SQL
oder verwendenOracle
.quelle
Wenn jemand diesen Fehler nach einem Phpmyadmin-Export erhält, wurde dies durch die Verwendung der benutzerdefinierten Optionen und das Hinzufügen der Anweisungen "drop tables" behoben.
quelle