使用预准备语句时,Mysql无法锁定表

时间:2013-11-13 21:45:24

标签: mysql prepared-statement

在锁定表for write之后尝试运行一个准备好的insert语句给我mysql的这个错误:在准备好的语句协议中不支持这个命令:LOCK TABLES tbl WRITE。

此问题的解决方法是什么?发动机用于表:INNODB。

P.S。 :我想锁定表,以便我可以避免重复插入(在应用程序端进行重复检查而不是db端,varchar(5000)的唯一索引是不可能的)。所以我需要锁定表,但我不能用准备好的语句来做。存储过程是否会出现相同的错误?关于这个问题的任何其他想法?

1 个答案:

答案 0 :(得分:2)

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

正如Geo C.在他的评论中所说的那样,你几乎肯定不会使用MD5发生碰撞,而你使用SHA256的可能性更小。无论你生成多少个URL,在碰撞的几率高到足以考虑使用锁的复杂解决方法之前,甚至数十亿个与你可以生成的哈希数相比都是无效的。