У нас ранее была база данных в MySQL. В нем у нас был стол с именем trace
. Мы давно удалили всю базу данных и создали еще одну с тем же именем. Теперь мы пытаемся воссоздать таблицу trace
из скрипта резервного копирования и получаем table already exists
. Хотя таблиц в новой базе данных явно нет. Если я пытаюсь создать таблицу, которая существовала ранее, я получаю эту ошибку. Если я создаю случайную таблицу, которой никогда не было, тогда все в порядке.
Вот код, который я использую для создания таблицы:
DROP TABLE IF EXISTS `Trace`;
CREATE TABLE `Trace` (
`TraceKey` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Trace Key',
`TableName` varchar(100) NOT NULL DEFAULT '' COMMENT 'Table Name',
`RecordKey` int(10) NOT NULL,
`Action` varchar(100) NOT NULL DEFAULT '',
`ActionTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Time Stamp',
`UserName` varchar(100) NOT NULL DEFAULT '' COMMENT 'UserName',
PRIMARY KEY (`TraceKey`)
) ENGINE=InnoDB AUTO_INCREMENT=6735 DEFAULT CHARSET=latin1;
Ошибка:
Table 'trace' already exists
У нас было около 20 таблиц (трассировка была одной из многих), и было много внешних ключей, если это помогло. Но мы явно сбросили БД и воссоздали ее.
UPDATE
Для тестирования я попробовал это, и оно работает
CREATE TABLE trace (id INT,data VARCHAR(100));
Однако, после того, как вы уронили этот стол и попробовали его снова, вот так:
CREATE TABLE Trace (id INT,data VARCHAR(100));
Это не работает, и я получаю trace already exists
ошибку.
Разница в верхнем и нижнем регистре ??
ОБНОВЛЕНИЕ 2
Это определенно проблема в верхнем и нижнем регистре. Изменение имени таблицы с Trace
на trace
работает даже при использовании старого скрипта.
Есть идеи, почему это так?