ALTER查询不起作用

时间:2015-09-24 20:16:33

标签: mysql database primary-key unique-constraint alter

我有两个表:cleanupuniqueEntries。它们都有一个自动增量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 个答案:

答案 0 :(得分:0)

我按照@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查询。 / p>