4

在锁定表以进行写入后尝试运行准备好的插入语句给我这个mysql错误:准备好的语句协议尚不支持此命令:LOCK TABLES tbl WRITE。

这个问题的任何解决方法?用于表的引擎:INNODB。

PS:我想锁定表,这样我就可以避免重复插入(在应用程序端而不是数据库端进行重复检查,对于 varchar(5000) 来说唯一索引是没有问题的)。所以我需要锁定表,但我不能用准备好的语句来做到这一点。存储过程会出现同样的错误吗?关于这个问题的任何其他想法?

4

1 回答 1

2

使用事务,创建一个哈希列,并在该列上放置一个唯一键。

正如 Geo C. 在他的评论中所说,使用 MD5 几乎肯定不会发生冲突,而使用 SHA256 的可能性更小。无论您生成多少个 URL,与在冲突几率高到足以考虑使用锁的复杂解决方法之前可以生成的散列数量相比,即使是数十亿个 URL 也算不了什么。

于 2013-11-13T22:20:05.167 回答