草庐IT

ACTIVE_TRANSACTION

全部标签

使用 BEGIN 和 START TRANSACTION 时 MySQL AUTOCOMMIT 状态

我需要在我的MySQL项目中使用事务。但我不确定是否必须使用mysql_query("SETAUTOCOMMIT=0");或不。我知道我有2个选择:开始开始交易我还听说这两项中的一项不需要使用AUTOCOMMIT=0。请帮助我知道什么时候我必须使用AUTOCOMMIT=0实际使用BEGIN或STARTTRANSACTION?谢谢。 最佳答案 如themanual中所述:Bydefault,MySQLrunswithautocommitmodeenabled.Thismeansthatassoonasyouexecuteastatem

php - 在具有多个 where 子句的 Active Record 中使用 find()

我想在ActiveRecord查询之后将(使用括号)分成3组。第一组将从第一个“Where”子句到最后一个“orWhere”。第二个和第三个将使用“andWhere”。请给我一些建议,告诉我如何使用方括号来分隔所有3个部分。$query=Book::find()->where('book_nameLIKE:book_name',array(':book_name'=>'%'.$book_name.'%'))->orWhere('book_categoryLIKE:book_category',array(':book_category'=>'%'.$category.'%'))->or

java - hibernate javax.persistence.RollbackException : Error while committing the transaction

我正在使用Hibernate和MySQL开发一个Java网络应用程序。有时,当我尝试持久化事物时,会出现回滚异常:javax.persistence.RollbackException:Errorwhilecommittingthetransactionatorg.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:94)atcom.tulips.dao.CommentDao.saveOrUpdate(CommentDao.java:42)atcom.tulips.servlets.CommentsSer

Could not open JDBC Connection for transaction; nested exception is java.sql.SQLNonTransientConnecti

在练习事务的相关代码时候一直报这个错误,也就是连接数据库连接异常,可以尝试从以下几个方面排查和解决:1.安全协议问题:useSSL设置为false&useSSL=false配置数据连接的字段上加一个useSSL=false;2.时区问题:在连接字符串加serverTimezone=UTC再不行试试jdbc:mysql://ip:3306/database?serverTimezone=GMT3.请求量太高导致数据库连接数不够:修改最大连接数使用MyBatis的SqlSession是不会自动关闭数据源连接的,需要使用Spring包装过的SelSqlSessionTemplate才会自动关闭数据源

php - Codeigniter Active Record - 计算总发现行数 (MySQL)

我在应用了限制的Codeigniter模型中使用复杂的SQL查询。我想计算在未应用限制和偏移量的情况下会找到的总行数。我想将计数连同结果数组一起返回到我的Controller-我该怎么做?如果这是正确的解决方案,我应该把SQL_CALC_FOUND_ROWS放在哪里?这是查询(最初不是我自己构建的):$this->db->select('table1.*,table2.*,table3.*,table4.*,table5.*,table6.*,table7.*,table8.*,table9.*,(SELECTGROUP_CONCAT(field1)FROMtable10WHEREta

php - Yii2 更新与 Active Record 多对多关系的联结表

我有3个表,例如数据库中的一个article表,一个tag表,一个article_tag表。文章和标签是N-M关系。当我需要添加新文章时,使用Yii2的事件记录的link()方法将关系保存到联结表,它工作正常。但是当我需要更新联结表时。如果我再次调用文章的link()方法。不起作用。下面是我的代码和错误信息。$tag_ids=Yii::$app->request->post('Article')['tags'];foreach($tag_idsas$value){$tag=Tag::findOne($value);$model->link('tags',$tag);}SQLSTATE[

Mysql - 序列化失败 : 1213 Deadlock found when try to get lock; try restarting transaction

我有菜单、类别和产品表。我正在使用mysql5.5,所有表都是innoDB并且在所有情况下id都是具有自动增量的主键(int)。menustableid,name,statuscategoriestableid,menu_id,nameproductstableid,menu_id,category_id,status,name,url,content多个脚本可以并行运行,执行包含以下逻辑的同一个php文件。STARTTRANSACTION;SETautocommit=0;LOCKTABLESproductsWRITE,categoriesWRITE,menusWRITE;SELECT

mysql - InnoDB : Bulk insert using transaction OR combine multiple queries?

在InnoDB中执行批量INSERT时,我应该使用事务吗STARTTRANSACTION;INSERTINTOtbl_name(a,b,c)VALUES(1,2,3);INSERTINTOtbl_name(a,b,c)VALUES(4,5,6);INSERTINTOtbl_name(a,b,c)VALUES(7,8,9);COMMITTRANSACTION;或者合并多个查询?INSERTINTOtbl_name(a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9);如果重要的话,我正在使用PHP和MySQL数据库在同一台机器上。 最佳答案

php - NOW() for DATETIME InnoDB Transaction guaranteed?

在单个InnoDB事务的2+个查询中使用NOW()是否保证插入的日期时间值在数据库中是准确的?换句话说,即使您在使用它的单个事务中有超过20个查询,NOW()是否总是相同,还是会改变? 最佳答案 Apparentlyitisnotguaranteed跨事务但可以从语句更改为语句。有一个解决方法可以使用asshownhere:BEGIN;SELECT@now:=NOW();INSERT...VALUES(...,@now,...);INSERT...VALUES(...,@now,...);UPDATE...@now...;COMMI

php - PDO::query() 运行到 "Cannot execute queries while other unbuffered queries are active."

也许其他人和我有同样的问题。我遇到了错误:Cannotexecutequerieswhileotherunbufferedqueriesareactive.ConsiderusingPDOStatement::fetchAll().Alternatively,ifyourcodeisonlyevergoingtorunagainstmysql,youmayenablequerybufferingbysettingthePDO::MYSQL_ATTR_USE_BUFFERED_QUERYattribute.在PDO上。正如在许多线程中提到的那样,错误至少可以是以下问题之一:如此处所述,查