在Linux上,我认为我的MySQL查询在某种程度上不起作用,因为查询不会显示输入表中的数据量的任何进展。有没有办法在不退出并重新进入命令行的情况下刷新MySQL命令行可用的数据?
我一直在搜索,但到目前为止只看到正在运行mysql -e
并将其放入 bash 循环中。我喜欢留在MySQL命令行中并运行其他命令,如describe tables
。
答案 0 :(得分:1)
您所看到的可能是长时间REPEATABLE-READ
交易的结果。在开始新事务之前,您只能看到在开始当前事务时提交的数据。
通常,mysql客户端以autocommit
模式运行。也就是说,每个SQL语句都隐式启动并提交自己的事务。在此模式下,每次查询时都应始终查看当前数据。您显然没有使用自动提交模式。
您可以启用自动提交:
mysql> SET SESSION autocommit=1;
或者您可以在方便时开始新的交易:
mysql> BEGIN;
另一种选择是在READ-COMMITTED
交易中运作。这意味着您的交易无需在开始交易时保留可重复的数据视图。它始终会查看最近提交的更改,即使您的交易正在进行中也是如此。
mysql> SET SESSION tx_isolation='READ-COMMITTED';
mysql> BEGIN;
(注意:MySQL 8.0.3将tx_isolation
的名称更改为transaction_isolation
。)
@JimmyB在上面关于transaction isolation levels的评论中发布的链接是有用的阅读。