更改查询不工作
ALTER Query Not Working
我有两个 table:cleanup
和 uniqueEntries
。它们都有一个自动递增 id
作为主键。 uniqueEntries
的 table 结构来自 cleanup
这样的:
$sql = "CREATE TABLE uniqueEntries LIKE cleanup"; //create table to store all unique entries
doQuery($sql, "success creating uniqueEntries", "failed creating uniqueEntries"); //perform query
Table cleanup
包含重复的用户名。当我将数据移动到 uniqueEntries
时,我想确保没有插入任何重复项。所以我需要在 User_ID
上实现一个 ALTER
语句。我是这样做的:
$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
}
}
我按照@Marc B 的建议从$conn()->error
输出消息,并了解到TEXT
列类型不允许ALTER
操作。
BLOB/TEXT column 'User_ID' used in key specification without a key length
所以,我回到我的 table 查询并将 User_ID
列从 TEXT
切换到 VARCHAR(15)
并且我能够 运行 ALTER
查询没有问题。
我有两个 table:cleanup
和 uniqueEntries
。它们都有一个自动递增 id
作为主键。 uniqueEntries
的 table 结构来自 cleanup
这样的:
$sql = "CREATE TABLE uniqueEntries LIKE cleanup"; //create table to store all unique entries
doQuery($sql, "success creating uniqueEntries", "failed creating uniqueEntries"); //perform query
Table cleanup
包含重复的用户名。当我将数据移动到 uniqueEntries
时,我想确保没有插入任何重复项。所以我需要在 User_ID
上实现一个 ALTER
语句。我是这样做的:
$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
}
}
我按照@Marc B 的建议从$conn()->error
输出消息,并了解到TEXT
列类型不允许ALTER
操作。
BLOB/TEXT column 'User_ID' used in key specification without a key length
所以,我回到我的 table 查询并将 User_ID
列从 TEXT
切换到 VARCHAR(15)
并且我能够 运行 ALTER
查询没有问题。