Mysql ALTER查询不工作
我有两个表:Mysql ALTER查询不工作,mysql,database,primary-key,unique-constraint,alter,Mysql,Database,Primary Key,Unique Constraint,Alter,我有两个表: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
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
包含重复的用户名。当我将数据移动到Uniquentries
中时,我希望确保没有插入任何重复项。因此,我需要在User\u 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
查询不会得到处理。向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
因此,我返回到我的表查询,将User\u ID
列从TEXT
切换到VARCHAR(15)
,并且我能够毫无问题地运行ALTER
查询。不要记录固定(且无用)的错误消息。让数据库告诉您哪里出了问题:eLog($fail.$conn->error)
或者数据库接口库的错误消息源是什么。