mysql 事务未提交导致死锁 Lock wait timeout exceeded; try restarting transaction 解决办法

原因分析问题出现环境:在同一事务内先后对同一条数据进行插入和更新操作;多台服务器操作同一数据库;瞬时出现高并发现象;在高并发的情况下,Spring 事物造成数据库死锁,后续操作超时抛出异常。 Mysql 数据库采用 InnoDB 模式,默认参数:innodb_lock_wait_timeout 设置锁等待的时间是 50s ,一旦数据库锁超过这个时间就会报错。解决方案1、通过下面语句查找到为提交事务

锁表解锁——开发过程中数据库某些表访问不了

MySQL锁概述相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用

sql 数据库设计——连续签到奖励

-- 用户签到时 UPDATE 签到表 SET 连续签到天数 = CASE 最近签到日期 WHEN Today THEN 连续签到天数 WHEN Today - 1 THEN (连续签到天数 + 1) MOD 8 ELSE 1 END, 最近签到日期 = Today WHERE 用户ID = 用户ID; -- 查询用户连续签到天数 SELECT C

mysql 数据库设计技巧

在商城类项目中,一个商品可能会有多种规格,商品的不同规格组合有着不同的库存,所以可以这样设计:good(商品表),存放各种表属性(名称,类别,分类,图片,详情,原价,现价,单件快递费。。),+has_spec(是否有规格),specs(有规格时,规格组合及库存),+stock(无规格库存)订单关联的表中,商品信息、用户信息等应该做冗余字段,因为商品和用户信息是变量,是可以随时修改的,外键还是要的,

mysql 创建远程用户并授权(远程登录)

1. 查看 mysql -> user 表select Host,User,Password from mysql.user;2. 创建远程用户(我跳过这步,直接分配权限,用户表也添加了相关远程用户)create user jason identified by 'jason';3. 给用户分配权限grant all privileges on *.* to 'jason'@'%'ident

修改mysql 数据库默认存储路径

1.进入MySQL控制台show variables like ’%datadir%’; #查询MySQL数据库存放目录例如:/usr/local/mysql/var退出mysql后service stop mysql(lnmp stop mysql如果安装的是lnmp包的话)2.复制原来数据库目录到新目录  复制 /usr/local/mysql/var 目录到  /data/part1/mys

SQL Server 查询解决乱码的问题

可能发生此类问题的原因有大概以下几种: 1 写入数据库的时候使用的是英文版操作系统, 默认编码为utf-8编码。送进数据库的字符串自然也是按utf-8编码的。 读取时使用的是中文操作系统,默认编码是gb2312 读出来的东西于是乱码了。 2 写入数据库的时候指定了字符串的编码方式 读取的时候指定的编码方式和写入时不一样。 3 该字符串是从文本文件或者网络等其他媒介读取出来然后再写入数据