Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql ALTER查询不工作_Mysql_Database_Primary Key_Unique Constraint_Alter - Fatal编程技术网

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)
或者数据库接口库的错误消息源是什么。