刷新 MySQL 命令行的数据而不退出并重新输入
Refreshing Data For MySQL Command Line Without Exiting and Re-Entering
在 Linux,我认为我的 MySQL 查询不知何故不起作用,因为查询不会显示输入 table 的数据量的任何进展。有没有一种方法可以在不退出并重新进入命令行的情况下刷新 MySQL 命令行可用的数据?
我一直在搜索,但到目前为止只看到 运行ning mysql -e
并将其放入 bash 循环中。我喜欢留在 MySQL 命令行和 运行 其他命令,如 describe tables
.
您看到的可能是长期 运行 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
。)
link @JimmyB 在上面发表的关于 transaction isolation levels 的评论对阅读很有帮助。
在 Linux,我认为我的 MySQL 查询不知何故不起作用,因为查询不会显示输入 table 的数据量的任何进展。有没有一种方法可以在不退出并重新进入命令行的情况下刷新 MySQL 命令行可用的数据?
我一直在搜索,但到目前为止只看到 运行ning mysql -e
并将其放入 bash 循环中。我喜欢留在 MySQL 命令行和 运行 其他命令,如 describe tables
.
您看到的可能是长期 运行 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
。)
link @JimmyB 在上面发表的关于 transaction isolation levels 的评论对阅读很有帮助。