我使用配置了 sqlite 数据库的Laravel 5.4。
我有一些表格,包括约会' 行约 2000 + 。
的表格每当我尝试加载此表时,都会出现Query Exception
,其中包含:
SQLSTATE[HY000]: General error: 1 too many SQL variables
同一个数据库中的其他表似乎没有问题。我用Google搜索并发现(也许)它与sqlite3支持的SQL变量限制有关。有什么想法吗?
更新:我删除了表格中的所有记录,现在没事了!
答案 0 :(得分:1)
在您的情况下,您可以通过将2000多个值的列表插入表(临时表或永久表)中,然后通过{{1在sql中引用}}或使用where id in (select id from my_table)
或inner join
。使用内部联接和永久表,您可以设置显式索引,这可能比依赖查询优化器来优化exists()
或in()
更为有用:
exists()
如果2000多个变量的列表每次都会更改,则可以在事务期间插入它们,然后再删除它们。您只需要确保将表值隔离到其他并发进程中即可(例如,表中有另一个键,用于thread_id或调用事务唯一的类似标识符)。