ALTER Query не работает
У меня есть две таблицы: cleanup
а также uniqueEntries
, У них обоих есть автоинкремент id
в качестве первичного ключа. Структура таблицы uniqueEntries
происходит от cleanup
в качестве таких:
$sql = "CREATE TABLE uniqueEntries LIKE cleanup"; //create table to store all unique entries
doQuery($sql, "success creating uniqueEntries", "failed creating uniqueEntries"); //perform query
Таблица cleanup
содержит повторяющиеся имена пользователей. Как я перемещаю данные в uniqueEntries
Я хочу убедиться, что я не вставляю дубликаты. Поэтому мне нужно реализовать ALTER
заявление о User_ID
, Я сделал это так:
$sql = "ALTER IGNORE TABLE uniqueEntries ADD UNIQUE (User_ID)"; //make User_ID unique
doQuery($sql, "success adding constraint to uniqueEntries", "failed adding constraint to uniqueEntries"); //perform query
Однако, в отличие от всех других моих запросов, ALTER
запрос не обрабатывается. я получил failed adding constraint to uniqueEntries
, Что я делаю неправильно?
Ниже моя функция doQuery:
function doQuery($sql, $success, $fail){
global $conn;
if ($conn->query($sql) === TRUE) {
eLog( $success ); //log outcome
} else {
eLog( $fail ); //log outcome
}
}
1 ответ
Я последовал совету @Marc B, чтобы вывести сообщение от $conn()->error
и узнал, что TEXT
тип столбца не позволяет ALTER
операции.
BLOB/TEXT column 'User_ID' used in key specification without a key length
Итак, я вернулся к своему табличному запросу и переключил User_ID
колонка из TEXT
в VARCHAR(15)
и я смог запустить ALTER
запрос без проблем.