当你看到这段出错信息:
ERROR 1100 : Table 'table1' was not locked with LOCK TABLES
有可能是真的锁表了,可以参见这篇文章http://imysql.cn/?q=node/21 或者查看手册来检查一下。
也有可能不是锁表了,而是这个表已经不存在了,mysql访问不到就以为是锁表了。而mysql给出的提示信息有很容易引起误解。
比如:你建了一个触发器:当A表有update操作时,同时更新B表。正常情况下没有问题。但是如果B表改名字,或者被删除,由于这个触发器仍然存在,所以当A表有update操作时,数据库会尝试更新B表,当然是失败了,但mysql这是不会给出“ERRORTable ‘B' not exist”的提示,而是提示你“Table 'B' was not locked with LOCK TABLES”。
这时如果你忘记了那个以前建的触发器,就很难找到错误的来源。我就被郁闷了一个上午。
ERROR 1100 : Table 'table1' was not locked with LOCK TABLES
有可能是真的锁表了,可以参见这篇文章http://imysql.cn/?q=node/21 或者查看手册来检查一下。
也有可能不是锁表了,而是这个表已经不存在了,mysql访问不到就以为是锁表了。而mysql给出的提示信息有很容易引起误解。
比如:你建了一个触发器:当A表有update操作时,同时更新B表。正常情况下没有问题。但是如果B表改名字,或者被删除,由于这个触发器仍然存在,所以当A表有update操作时,数据库会尝试更新B表,当然是失败了,但mysql这是不会给出“ERRORTable ‘B' not exist”的提示,而是提示你“Table 'B' was not locked with LOCK TABLES”。
这时如果你忘记了那个以前建的触发器,就很难找到错误的来源。我就被郁闷了一个上午。