У меня есть две таблицы: 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
}
}
eLog($fail . $conn->error)
или какой-либо другой источник сообщения об ошибке вашей библиотеки интерфейса БД. - person Marc B   schedule 24.09.2015