文档解释
Error number: 3058; IDC.com/jsjcwz/11172.html" target="_blank">Symbol: ER_USER_LOCK_DEADLOCK; SQLSTATE: HY000

Message: Deadlock found when trying to get user-level lock; try rolling back transaction/releasing locks and restarting lock acquisition.
错误说明:
ER_USER_LOCK_DEADLOCK错误的涵义是系统检测到死锁,而这种死锁是由用户定义的锁引起的。它表明用户自定义的锁(通常是更新锁)或者自定义的事务无法完成,因为系统检查到两个活动的用户事务或者活动的锁互相等待,而这个ER_USER_LOCK_DEADLOCK错误就是报告系统检测到死锁的消息。
常见案例
此错误很可能是由于用户创建和使用自定义锁成环导致的,另外,此错误还可能是由于两个或多个并发线程在数据库端的 服务器 暂时存在的死锁的数据行中,或者是资源限制而引起的资源斗争。
解决方法:
一般解决此类问题之前,应该先分析清楚问题发生的原因,以及问题涉及到什么类型的事务和锁,以便能够更好地解决问题。然后,进行资源释放,并缩短事务范围和时间,防止出现死锁现象。再者,应尽量减少锁的使用范围,减少锁的使用次数,尽可能地避免锁环。最后,就是测试和优化,在此之前,应做到测试的时候,注意观察死锁的痕迹,在此基础上修改优化程序。
香港美国云服务器首选树叶云,2H2G首月10元开通。树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
在linux环境下怎么打开mysql数据库
linux系统进入mysql数据库的方法:连接MYSQL:格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>2、连接到远程主机上的MYSQL。 假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。 则键入以下命令:mysql -h110.110.110.110 -uroot -pabcd123(注:u与root可以不用加空格,其它也一样)3、退出MYSQL命令: exit (回车)一个建库和建表以及插入数据的实例:create database school; //建立库SCHOOLuse school; //打开库SCHOOLcreate table teacher //建立表TEACHER(id int(3) auto_increment not null primary key, //id设置为主关键字,并自动设值,也就是添加的时候,你不必向ID字段写内容name char(10) not null,address varchar(50) default 深圳, //设置默值为深圳year date); //建表结束//以下为插入字段insert into teacher values(,glchengang,建平一中,1976-10-10); //ID不用写内容insert into teacher values(,jack,建平一中,1975-12-23);
如何让mysql以root用户远程登陆mysql数据库
开启MySQL的远程登陆帐号有两大步:1、确定服务器上的防火墙没有阻止3306端口。 MySQL默认的端口是3306,需要确定防火墙没有阻止3306端口,否则远程是无法通过3306端口连接到MySQL的。 如果您在安装MySQL时指定了其他端口,请在防火墙中开启您指定的MySQL使用的端口号。 如果不知道怎样设置您的服务器上的防火墙,请向您的服务器管理员咨询。 2、增加允许远程连接MySQL用户并授权。 1)首先以root帐户登陆MySQL在Windows主机中点击开始菜单,运行,输入“cmd”,进入控制台,MySQL的bin目录下,然后输入下面的命令。 在Linux主机中在命令提示行下输入下面的命令。 >MySQL-uroot-p6为root用户的密码。 2)创建远程登陆用户并授权>grantallPRIVILEGESondiscuz.*toted@123.123.123.123identifiedby;上面的语句表示将discuz数据库的所有权限授权给ted这个用户,允许ted用户在123.123.123.123这个IP进行远程登陆,并设置ted用户的密码为。 下面逐一分析所有的参数:allPRIVILEGES表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,sqlserver/=_blank>delete,create,drop等,具体权限间用“,”半角逗号分隔。 discuz.*表示上面的权限是针对于哪个表的,discuz指的是数据库,后面的*表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。 ted表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。 123.123.123.123表示允许远程连接的IP地址,如果想不限制链接的IP则设置为“%”即可。 为用户的密码。 执行了上面的语句后,再执行下面的语句,方可立即生效。 >flushprivileges;远程登录mysql一些常用的代码段,大家可参考一下。 一、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下:在本机先使用root用户登录mysql:mysql-uroot-pyoupassword进行授权操作:mysql>GRANTALLPRIVILEGESON*.*TOroot@%IDENTIFIEDBYyoupasswordWITHGRANTOPTION;重载授权表:FLUSHPRIVILEGES;退出mysql数据库:exit二、允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限,具体操作如下:在本机先使用root用户登录mysql:mysql-uroot-pyoupassword进行授权操作:GRANTALLPRIVILEGESON*.*TOroot@172.16.16.152IDENTIFIEDBYyoupasswordWITHGRANTOPTION;重载授权表:FLUSHPRIVILEGES;退出mysql数据库:exit三、允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限,具体操作如下:在本机先使用root用户登录mysql:mysql-uroot-pyoupassword进行授权操作:GRANTselect,insert,update,deleteON*.*TOroot@172.16.16.152IDENTIFIEDBYyoupassword;重载授权表:FLUSHPRIVILEGES;退出mysql数据库:exit四、删除用户授权,需要使用REVOKE命令,具体命令格式为:REVOKEprivilegesON数据库[.表名]FROMuser-name;具体实例,先在本机登录mysql:mysql-uroot-pyoupassword进行授权操作:GRANTselect,insert,update,deleteONTEST-DBTOtest-user@172.16.16.152IDENTIFIEDBYyoupassword;再进行删除授权操作:REVOKEallonTEST-DBfromtest-user;****注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。 最后从用户表内清除用户:DELETEFROMuserWHEREuser=test-user;重载授权表:FLUSHPRIVILEGES;退出mysql数据库:exit
如何设置mysql数据库为utf-8编码
检查当前数据库编码。 使用语句:show variables like ‘%character%’;show variables like’%collation%’;如果不是以上情况,需要将mysql编码设置为utf-8。 具体步骤如下:如果安装mysql时安装了“MySql Sever Instance Configuration Wizard”,则只需要启动该程序进行相应设置即可。 如下面截图中所描述,需要将默认编码设置为utf8如果没有该程序,需要手动修改mysql编码。 1、编辑MySql的配置文件MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫,可以搜索,Linux下一般是 /etc/--在 [mysqld] 标签下加上以下内容:default-character-Set = utf8character_set_server = utf8注意:如果此标签下已经存在“default-character-set=GBK”类似的内容,只需修改即可。 --在 [mysql]标签下加上一行default-character-set = utf8--在 []标签下加上一行default-character-set = utf8--在 [mysqld_safe]标签下加上一行default-character-set = utf8--在 [client]标签下加上一行default-character-set = utf82、重新启动MySql服务Windows可在服务管理器中操作,也可使用命令行:net stop mysql 回车net start mysql 回车服务名可能不一定为mysql,请按自己的设置Linux下面可是用 service mysql restart如果出现启动失败,请检查配置文件有没有设置错误3、查看设置结果登录MySql命令行客户端:打开命令行mysql –uroot –p 回车输入密码进入mysql后 执行 :show variables like % character %;另外:建立数据库时可以使用以下命令:create database app_relation character set utf8;use app_relation;source app_;修改数据库编码的命令为:alter database app_relation character set utf8;
发表评论