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 запрос без проблем.

Другие вопросы по тегам