找出索引是否存在mysql

时间:2013-06-03 09:52:25

标签: mysql indexing

我有一张桌子:

    CREATE TABLE IF NOT EXISTS `agents` (
    `idx` int(11) NOT NULL AUTO_INCREMENT,
    `newConfig` tinyint(1) NOT NULL DEFAULT '0',
    `agent_id` char(20) NOT NULL,
    `time` int(11) NOT NULL,
    `status` varchar(15) NOT NULL,
    `agent_ip` char(15) NOT NULL,
    `FilterExpression` varchar(1024) NOT NULL,
    `agent_alias` char(128) NOT NULL,
    `agent_type` char(128) NOT NULL,
    `ATMSIP` varchar(15) NOT NULL,
    `ATMSPort` varchar(5) NOT NULL,
    `MaxHeadersLength` varchar(10) NOT NULL,
    `MaxGetParamsLength` varchar(10) NOT NULL,
    `MaxPostLength` varchar(10) NOT NULL,
    `StatusInterval` int(11) NOT NULL,
    `CookieExpireTime` int(11) NOT NULL,
    `ConcurrentSessions` varchar(10) NOT NULL,
    `MessagesQueueSize` varchar(10) NOT NULL,
    `owner_user` char(20) NOT NULL,
    `owner_group` char(20) NOT NULL,
    `msg_id` bigint(20) NOT NULL,
    `NetworkInterface` char(64) NOT NULL,
    `fingerprint_headers` varchar(4096) NOT NULL,
    PRIMARY KEY (`idx`),
    UNIQUE KEY `agent_id` (`agent_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

现在我想通过执行以下操作验证是否已添加索引agent_id(如果表已存在且因此未创建):

if not exists ( SELECT INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE
        `TABLE_SCHEMA` = 'Telepath-NewSchema' AND
        `TABLE_NAME` = `agents` AND `INDEX_NAME` = `agent_id`)
    then 
        ALTER IGNORE TABLE `agents` ADD UNIQUE `agent_id` (`agent_id`);
end if;

但是当我运行脚本时,我得到:     'where子句'中的未知列'agent'

为什么它认为代理是一个列?

由于

1 个答案:

答案 0 :(得分:1)

`agents`应为'agents''agent_id'也一样。