自从更新mysql以后,我一直收到警告(它的日志被淹没了).It状态,
1287, "'@@tx_isolation' is deprecated and will be removed in a future release. Please use '@@transaction_isolation' instead"
在mysql下
mysql> show variables like "tx_isolation";
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
1 row in set (0.00 sec)
我还有警告暗示的新变量..
mysql> show variables like "transaction_isolation";
+-----------------------+-----------------+
| Variable_name | Value |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec
我知道变量w已不再使用。我希望它消失但我对我的疑问持谨慎态度。是删除警告变量的正确过程。如果是这样,怎么样?
同时检查my.cnf,我没有看到任何变量的提及。
答案 0 :(得分:27)
问题在SQLAlchemy中作为版本1.1.15的一部分得到解决,并在2017-11-03推出。通过将SQLAlchemy升级到1.1.15,警告消失。
$p
答案 1 :(得分:2)
从MySQL 5.7.20开始,您应该转换为使用transaction_isolation。在文档中说明:
在MySQL 5.7.20之前,使用tx_isolation而不是 transaction_isolation。
https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html
<强> TX_ISOLATION 强>
Deprecated 5.7.20
System Variable Name tx_isolation
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_tx_isolation
<强> transaction_isolation 强>
Command-Line Format --transaction-isolation=name
System Variable (>= 5.7.20) Name transaction_isolation
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_transaction_isolation
编辑:
不要依赖旧变量,而是开始使用新变量,如文档中提供的示例
SELECT @@GLOBAL.transaction_isolation, @@transaction_isolation;
SET GLOBAL transaction_isolation='REPEATABLE-READ';
SET SESSION transaction_isolation='SERIALIZABLE';
您必须搜索代码以确定已弃用变量的使用位置,并将其替换为新的变量/语法。
答案 2 :(得分:1)
我在烧瓶设置中使用pymysql库时出错了。降级到mysql 5.6有效,但可能不是最好的解决方案。
答案 3 :(得分:0)
我安装了sqlalchemy == 1.1.15,问题是一样的。因此,我更改了sqlalchemy的base.py中的命令,如下所示:
#cursor.execute('SELECT @@tx_isolation')
cursor.execute('SELECT @@transaction_isolation')
你必须开始一个新的python才能看到变化。