Mysql 中不commit也可以改变数据库吧,那么写不写commit命令有什么区别呢?

本文详细解释了在MySQL中使用不同存储引擎时commit的作用及意义,特别是针对支持事务的InnoDB引擎,探讨了系统参数对自动提交的影响,并对比了使用与不使用commit的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql 中不commit也可以改变数据库吧,那么写不写commit命令有什么区别呢? 15

主要指(INSERT / DELETE / UPDATE / SELECT ),本人初学者,谢谢大家的指点。应该是写好还是不写好。
Andy666andy  |  浏览 14176 次
我有更好的答案
推荐于2017-08-31 01:36:37 最佳答案
这个要看你用什么“存储引擎”
如果是不支持事务的引擎,如myisam,则是否commit都没有效的。

如果是支持事务的引擎,如innodb,则有系统参数设置是否自动commit,查看参数如下:
mysql> show variables like '%autocommit%';

其他回答

这个要看你用什么“存储引擎”
如果是不支持事务的引擎,如myisam,则是否commit都没有效的。

如果是支持事务的引擎,如innodb,则有系统参数设置是否自动commit,查看参数如下:
mysql> show variables like '%autocommit%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec)

mysql>

显示结果为on表示事务自动提交,也即不用手工去commit。
当然,你可以设置其为OFF,然后自己手工去commit。
 本回答被提问者采纳
vinson_shen    |  推荐于2016-11-24 05:28:20
评论(4) 
27  6
话说mysql在进行数据操作语言(dml)(即insert,delete等)的时候是默认自动commit的
optilixue    |  发布于2010-08-04 18:03
评论 
3  1
使用了commit后你不可以回退,它会永久改变你的数据,而不使用只是临时改变,它把改变后的内容备份了一份在日志中,你可以rollback还原回来,看情况而用了。
924922279    |  发布于2010-08-02 22:41
评论(1) 
2  0
可以
johnny20102012    |  发布于2010-08-03 16:29
评论 
0  0
那 MYSQL“事务”的机制如何体现?
caiqiupeng    |  发布于2010-08-02 22:31

在Python中使用`aiomysql`库操作MySQL数据库并尝试入数据但未观察到错误,但实际上数据库没有收到数据,这可能是由于以下几个原因: 1. 连接或会话管理问题:确认是否在每次入之前都正确地创建了连接,并在操作结束后通过`asyncio`调用`await connection.commit()`来提交事务。如果没有正确的关闭连接或回滚事务,可能会导致数据会持久化。 ```python import asyncio import aiomysql async def write_data(): async with aiomysql.create_pool( host='localhost', port=3306, user='your_username', password='your_password', db='your_database' ) as pool: async with pool.acquire() as conn: async with conn.cursor(aiomysql.DictCursor) as cursor: await cursor.execute('INSERT INTO your_table (column1, column2) VALUES (%s, %s)', ('value1', 'value2')) await conn.commit() # 确保在这里添了提交事务的步骤 loop = asyncio.get_event_loop() try: loop.run_until_complete(write_data()) except Exception as e: print(f"Error occurred: {e}") finally: loop.close() ``` 2. 异步回调错误:检查是否有任何异常在插入数据或提交时被捕获但未处理,这可能导致数据丢失。确保任何异步函数内的异常都被适当地捕获并处理。 3. 数据库表结构问题:确认表的字段和值是否匹配。如果表结构有变更,比如插入的数据符合预期的字段类型,数据库可能会接受并保存数据。 4. 网络延迟:虽然罕见,但网络问题也可能造成看似正常入却未能立即反映到数据库上。 相关问题: 1. 如何检查`aiomysql`连接是否有效? 2. 如果数据库能连接但入数据,如何查看执行日志? 3. `aiomysql`如何处理并发入以避免数据冲突?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值