我的生产数据库有一个只读从属数据库,我正在尝试运行一个生成报告的过程。该过程创建一个临时表,插入一些记录,然后从表中选择结果。当我通过命令行界面或db UI工具(Navicat)运行该过程时,这种方法工作得很好,创建的表没有任何问题,我可以插入并接收正确的报告。
当我尝试在Java中使用jdbc调用相同的过程时,问题就开始了。当我运行这个过程时,我得到了一个异常:
Exception in thread "main" java.sql.SQLException: The MySQL server is running with the --read-only option so
我遇到的情况是,两个事务会造成mysql死锁。
引发以下错误:Deadlock found when trying to get lock; try restarting transaction
如果我是正确的,这个错误意味着mysql死锁超时已经过期,mysql试图做些什么来消除这个死锁。
对我来说不清楚的是,try restarting transaction是什么意思?如何“重新启动”事务?
两个锁定的事务会发生什么?他们都被取消了吗(滚回)?或者只是其中一个被取消了锁才能被释放。
提前感谢
我在一个文件中有sql,其中包含许多语句。如何让mysql在不执行的情况下检查sql的合法性? 就像这样 mysql --check-only input.sql 至少,我需要检查语法。 理想情况下,它还会尝试插入数据和检查约束。基本上将整个文件包装在一个隐式事务中,该事务会自动回滚。 mysql CLI可以做到这一点吗?
以下是“显示引擎INNODB状态”的几行响应:
TRANSACTIONS
------------
Trx id counter 58EC54C6
Purge done for trx's n:o < 58EC54C3 undo n:o < 0
History list length 2420
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 58EC51E6, not started
MySQL thread id 520131, OS thread handle 0x7f0db930e700, query id
我们已经成功地将数据从MySQL从数据库复制到MSSQL数据库中。MySQL服务器是链接服务器。我尝试使用我的MySQL提供的ODBC连接器的v3.51和v5.1.8。
简单地尝试使用OPENQUERY从MySQL中的表插入到MSSQL中的临时表中会导致以下错误:
Server: Msg 7391, Level 16, State 1, Line 1
The operation could not be performed because the OLE DB provider 'MSDASQL' was unable to begin a distributed transa
因此,假设我同时使用两个驱动程序(在特定的mysql和sqlite3中)
我有一组更改,只有当两个dbms都没有失败时,才必须在这两个连接上提交()ted,如果其中一个或另一个失败,则必须对rollBack()ed:
<?php
interface DBList
{
function addPDO(PDO $connection);
// calls ->rollBack() on all the pdo instances
function rollBack();
// calls ->commit() on all the pdo i