我有一个mariaddb galera集群(3个多主机),需要进行大量批量插入。我见过和使用过的最快的方法是通过本地infile加载数据。该表属于INNODB
类型当我插入的表格中有一个具有自动修正值的主键时,这是有效的。
但是,由于我根据3列(日期,vouchernumber和类型)将主要密钥更改为唯一密钥,其中凭证编号和日期可以相同但不是类型。这不再有效。
在php中,错误返回是关于Packets乱序,不是很有帮助。通过mysql直接运行它的returend错误是:
ERROR 1213(40001):尝试锁定时发现死锁;尝试重新启动交易
搜索这个并没有提供明确的答案,但我怀疑它是由于多主集群而导致的,因为插入auto_increment和auto_increment_offset以及由覆盖集群管理器管理的clusternode号通常使插入成为唯一的。 http://codership.blogspot.nl/2009/02/managing-auto-increments-with-multi.html
我认为LOAD DATA INFILE只能使用带有自动增量的primairy键。
但我不确定,因此这个问题可以证实这一点,也可以帮助我通过其他参数解决问题。
非常感谢帮助。