mysql 发生系统错误1067的解决方法
mysql 发生系统错误1067的解决方法
今天要把WEB项目打包成EXE,可是在数据库上卡住了。
在启动数据库服务的时候发生系统错误 1067。
解决方法如下:
1、先删除mysql服务
控制面板->管理工具->服务,先停止mysql服务
开始->运行->输入cmd->sc delete mysql
服务删除
2、修改my.ini
如果没将其创建(以下设置可以参考/chuyanwu/blog/item/98142a2e7d448d564ec 2262c.html一般这个设置都不会错误)
[mysqld]
# set basedir to your installation path
basedir=c:/mysql (mysql所在目录)
# set datadir to the *** of your data directory
datadir=c:/mysql/data (mysql所在目录/data)[WinMySQLAdmin]
Server=c:/mysql/bin/mysqld-nt.exe
3、启动服务
附:启动服务bat:(放在mysql根目录下)
复制代码代码如下:
@echo off
if not exist mysqlServer5\data\%computername%.pidgotostartsvr
net stop MySQL
mysqlServer5\bin\mysqld-nt.exe --remove MySQL
:startsvr
echo MySQL服务正在启动.....
mysqlServer5\bin\mysqld-nt.exe --install MySQL --defaults-file="%cd%\my.ini"
net start MySQL
pause
MySQL安装与备份
一、下载MySQL
/downloads
二、安装过程
1、解压缩mysql-noinstall-5.0.51b-win32.zip到一个目录。
假定MYSQL_HOME=C:\mysql-5.0.51b-win32
2、编写mysql的运行配置文件my.ini
my.ini
—————————–
[mysqld]
# 设置mysql的安装目录
basedir=$MYSQL_HOME
# 设置mysql数据库的数据的存放目录,必须是data,或者是\\xxx\data
datadir=$MYSQL_HOME\data
# 设置mysql服务器的字符集
default-character-set=utf8
[client]
# 设置mysql客户端的字符集
default-character-set=gbk
—————————–
3、安装mysql服务
从MS-DOS窗口进入目录C:\mysql-5.0.51b-win32\bin,
(把my.ini放到C:\mysql-5.0.51b-win32\目录下!)
运行如下命令:
mysqld –install MySQL5 –defaults-file=C:\mysql-5.0.51b-win32\my.ini(服务安装成功!但是出现发生系统错误1067)
mysqld-nt.exe -install(服务安装成功!并成功启动)
4、启动mysql数据库
还在上面的命令窗口里面,输入命令:net start MySQL5
这样就启动了mysql服务。
5、删除服务
执行mysqld –remove MySQL5即可
-------------------------
MySQL备份常常有以下几种方法
1、使用phpmyadmin,不过用这个备份,数据的大小要小于两兆,多了就不好恢复了,对于数据特别小的备份,还是挺管用的!
2、使用程序软件自带的后台备份工具备份,这样备份出来的数据一般是没有大小限制的,备份出来后的还原是需要将该程序在新空间安装一次,然后登陆后台,在后台用其自带的还原工具还原一下就实现了新的数据的导入,比如,象discuz、phpwind、bo-blog……都可以这样备份!
3、使用其他SQL工具软件备份:比较好用的有帝国备份王优点,数据库可以大小不受限制,不过程序被zend了,并且备份程序文件很多。
另一个软件为 faisunsql 优点,数据库可以大小不受限制,备份程序就一个文件,导出,导入方便,直接操作数据库。
(强烈推荐使用) 详细出处参考:/article/19900.htm。
导入数据库时报错1067–Invaliddefaultvaluefor‘字段名’
导⼊数据库时报错1067–Invaliddefaultvaluefor‘字段名’最近把mysql升级到5.7了,wordpress导数据报错Invalid default value for 'comment_date'原因出在类似这样的语句DROP TABLE IF EXISTS `wp_comments`;CREATE TABLE `wp_comments` (`comment_ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,`comment_post_ID` bigint(20) UNSIGNED NOT NULL DEFAULT0,`comment_author` tinytext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL,`comment_author_email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT'',`comment_author_url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT'',`comment_author_IP` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT'',`comment_date` datetime(0) NOT NULL DEFAULT'0000-00-00 00:00:00',`comment_date_gmt` datetime(0) NOT NULL DEFAULT'0000-00-00 00:00:00',`comment_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL,`comment_karma` int(11) NOT NULL DEFAULT0,`comment_approved` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT'1',`comment_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT'',`comment_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT'',`comment_parent` bigint(20) UNSIGNED NOT NULL DEFAULT0,`user_id` bigint(20) UNSIGNED NOT NULL DEFAULT0,PRIMARY KEY (`comment_ID`) USING BTREE,INDEX `comment_post_ID`(`comment_post_ID`) USING BTREE,INDEX `comment_approved_date_gmt`(`comment_approved`, `comment_date_gmt`) USING BTREE,INDEX `comment_date_gmt`(`comment_date_gmt`) USING BTREE,INDEX `comment_parent`(`comment_parent`) USING BTREE,INDEX `comment_author_email`(`comment_author_email`(10)) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT =35CHARACTER SET= utf8mb4 COLLATE = utf8mb4_unicode_520_ci ROW_FORMAT = Dynamic;这种报错多是你mysql升级到5.7⽽引起的默认值不兼容的问题。
【错误】mysql出现1067-InvaliddefaultvalueforUPDATE_。。。
【错误】mysql出现1067-InvaliddefaultvalueforUPDATE_。
今天⼯作中遇到修改表结构的时候出现错误Invalid default value for 'UPDATE_TIME 问题原因是因为db 表中update_time的默认时间写成了 '0000-00-00 00:00:00'`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',因为timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59,所以必须得把字段UPDATE_TIME 的默认值修改成:1970-01-01 00:00:00 到 2037-12-31 23:59:59 之间的值,发现默认值必须在1970-01-01 10:00:00 以后才修改成功,不知道什么原因!解决⽅式1:sql解决alter table tmp_wrh_1 alter column update_time drop default;alter table tmp_wrh_1 alter column UPDATE_TIME set default '1970-01-01 10:00:00';sql 含义alter table 表名 alter column 字段名 drop default; (若本⾝存在默认值,则先删除)alter table 表名 alter column 字段名 set default 默认值;(若本⾝不存在则可以直接设定)2:利⽤navicate 解决右键表 -> 设计表将默认值改成'1970-01-01 10:00:00'。
Mysql常见错误提示及解决方法
Mysql常见错误提示及解决方法130 :文件格式不正确。
(还不是很清楚错误的状况)145 :文件无法打开。
1005:创建表失败。
1006:创建数据库失败。
1007:数据库已存在,创建数据库失败。
1008:数据库不存在,删除数据库失败。
1009:不能删除数据库文件导致删除数据库失败。
1010:不能删除数据目录导致删除数据库失败。
1011:删除数据库文件失败。
1012:不能读取系统表中的记录。
1016:文件无法打开,使用后台修复或者使用phpmyadmin 进行修复。
Quote:开始=>所有程序=>附件=>命令提示符输入mysql 所在硬盘盘符cd mysql 所在目录cd bin输入myisamchk -f D:usr/local/mysql/data/bbs/PW_members.MYIps : D:usr/local/mysql/data/bbs 是你论坛数据库的路径-f 根据具体情况选择,一般也可以选择-r注意你的系统C盘或放数据库的硬盘空间是否足够,一般小于1G 很容易出现错误。
或用mysqlcheck命令进行修复。
具体的方法:利用命令行进入mysql/bin目录,执行mysqlcheck -o -r phpwind -uroot -p其中phpwind是你数据库的名称,root是你的数据库用户名,然后会提示你输入密码。
然后就会修复你的数据库。
1017:服务器非法关机,导致该文件损坏。
1020:记录已被其他用户修改。
1021:硬盘剩余空间不足,请加大硬盘可用空间。
1022:关键字重复,更改记录失败。
1023:关闭时发生错误。
1024:读文件错误。
1025:更改名字时发生错误。
1026:写文件错误。
1030:可能是服务器不稳定。
(具体原因不是很清楚)1032:记录不存在。
1036:数据表是只读的,不能对它进行修改。
1037:系统内存不足,请重启数据库或重启服务器。
1038:用于排序的内存不足,请增大排序缓冲区。
navicate 1067 - invalid default value for 'id' -回复
navicate 1067 - invalid default value for 'id' -回复问题:“[navicate 1067 invalid default value for 'id']”是什么意思?在本文中,我们将一步一步回答这个问题,并探讨与之相关的主题。
首先,让我们了解这个错误的背景。
Navicat是一种流行的数据库管理工具,它提供了访问和管理数据库的功能。
当使用Navicat创建或修改数据库表的时候,某些情况下会出现“1067 invalid default value for 'id'”的错误信息。
这个错误信息暗示了对于'id'字段的默认值无效。
接下来,让我们深入探讨这个问题的背后原因。
这个错误通常发生在MySQL数据库中,因为MySQL对于某些数据类型的字段默认值有一些限制。
例如,对于一个自增的主键字段'id',在创建表的时候必须指定一个有效的默认值。
原因可能是在使用Navicat创建或修改表的过程中,我们没有为'id'字段指定一个有效的默认值。
这可能导致MySQL引擎无法解析这个默认值,从而产生了“1067 invalid default value for 'id'”的错误信息。
那么,我们应该如何解决这个问题呢?以下是一些解决方法:1. 指定有效的默认值:在使用Navicat或其他数据库管理工具创建或修改数据库表的时候,确保为'id'字段指定一个有效的默认值。
这个默认值可以是一个整数、字符串或其他与数据类型相匹配的值。
2. 检查数据类型:在创建或修改表的过程中,确保'id'字段的数据类型与默认值的数据类型相匹配。
如果默认值是一个整数,那么'id'字段的数据类型应该是整数类型。
3. 检查语法错误:检查表的创建或修改语句是否存在其他的语法错误。
MySQL解决1067错误(Windows平台)
MySQL解决1067错误(Windows平台)网上说了很多解决1067错误的方法,大多1067错误都是因为之前装了mysql后在重装一边就发生了这个错误。
我的解决办法是在任务管理其中结束点mysqld-nt.exe 。
这是因为之前的mysql mysqld-nt.exe占用了3306端口,导致自己的mysql启动失败。
当然出错的情况多重多样,以下是网上提供的解决方案(部分转载):1.“安装/删除应用程序”中卸载MYSQL程序2.去删除所有的数据库文件.删除WINDOW目录下的MY.INI文件3.进入注册表.删除以下内容:A.HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录删除B.HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录删除C.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MyS QL 目录删除D.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl001t\Services\MYSQL 目录E.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl002\Services\MYSQL目录F.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MYSQL目录001.002可能为其它值.5.删除完以上内容后.重装MYSQL.啊哈!成功了!1067错误也不会再出现了!!总结一句话.WINDOWS目录下的MY.INI是祸害的根源,注册表中的EVENTLOG下的那些目录也是很需要注意的,但没有前者重要!。
MYSQL服务不能启动
mysql自动关闭服务、连接限制等问题的解决方法2011-03-02 11:33通过mysql服务器端程序mysql Administrator调整连接参数。
将max_connections max_updates max_questions三项数据调整到很大的数字,那么你有限的操作将不会导致数据库服务的终止了在MySQL数据库中,如果一个连接8小时没有请求和操作,就会自动断开,从而导致一些基于数据库连接的应用程序,特别是 WEB 应用程序出错。
有三个方法可以解决这个问题:1:修改MySQL配置参数2:修改JDBC3:修改第三方的数据库连接池应用 Proxool.xml方法一:这个参数的名称是 wait_timeout,其默认值为 28800秒(8小时)。
其意义为关闭一个连接之前在这个连接上等到行动的秒数,也就是说,如果一个连接闲置超过这个选项所设置的秒数,MySQL 会主动断开这个连接。
修改操作:linux下打开/etc/f,在属性组mysqld下面添加参数如下:[mysqld]interactive_timeout=28800000wait_timeout=28800000windows下打开my.ini,增加:interactive_timeout=28800000wait_timeout=28800000有实践表明,没有办法把这个值设置成无限大,即永久。
因此如果你无法保证你的应用程序必定在设定的秒数内至少有一次操作,那么最好用第二个方法解决这个问题。
方法二:修改如下JDBC连接的 URL:jdbc:mysql://hostaddress:3306/schemaname?autoReconnect=true添加 autoReconnect=true 这个参数,即能解决这个问题。
方法三:配置文件(proxool.xml):<?xml version="1.0" encoding="UTF-8"?><!-- the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is ignored. --><something-else-entirely><proxool><!-- proxool别名 --><alias>mysql</alias><!-- 数据库连接URL --><driver-url>jdbc:mysql://localhost/yourDatebase?useUnicode=true&characterEncoding=UTF-8</driver-url><!-- JDBC驱动名称 --><driver-class>com.mysql.jdbc.Driver</driver-class><!-- 数据库连接帐号 --><driver-properties><property name="user" value="root" /><property name="password" value="password" /></driver-properties><!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 --><house-keeping-sleep-time>90000</house-keeping-sleep-time><!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 --><maximum-new-connections>20</maximum-new-connections><!-- 最少保持的空闲连接数 --><prototype-count>3</prototype-count><!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 --><maximum-connection-count>20</maximum-connection-count><!-- 最小连接数 --><minimum-connection-count>3</minimum-connection-count><!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 --><test-before-use>true</test-before-use><test-after-use>true</test-after-use><!-- 用于测试的SQL语句一定要写(不知道问什么)--><house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql> </proxool></something-else-entirely>三、开始菜单-运行-services.msc找到mysql的服务并双击点击恢复选项卡第一次失败:默认是“不操作”,改成"重新启动服务"。
mysql修改sql_mode报错的解决
mysql修改sql_mode报错的解决⽬录⼀ ERR 1067引发的⾎案⼆问题的源头sql_mode三设置sql_mode⼀ ERR 1067引发的⾎案今天在Navicat中运⾏sql语句创建数据表出现了错误Err 1067。
⽽这条语句在有些同事的mysql上是正确的,但是在有些⼈那⾥就报错。
你说⽓不⽓⼈。
原因竟然是timestamp的默认值不正确。
查阅资料得知,mysql5.7版本中有了⼀个STRICT mode(严格模式),⽽在此模式下默认是不允许设置⽇期的值为全0值的,所以想要解决这个问题,就需要修改sql_mode的值。
⼆问题的源头sql_mode我们可以进⼊到mysql中⼀探sql_mode的究竟。
⾸先进⼊到mysql的安装⽬录下的bin⽬录,使⽤管理员⽤户登录mysql数据库。
使⽤命令 mysql –h localhost –u root–p 其中-h是指定主机名或IP地址, -u是指定⽤户, -p是使⽤密码登录。
使⽤命令 select @@sql_mode; 可以查看sql_mode的值。
如果输⼊了命令却没有反应,只是单单出现了 -> ,那么我想你多半是应该像我⼀样,没有输⼊“;”。
通过上图中的结果我们可以看到sql_mode中有NO_ZERO_IN_DATE和NO_ZERO_DATE,在命令⾏中输⼊set sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE','')); 可以修改sql_mode。
之后可以查看⼀下sql_mode的值。
可以发现已经成功去掉了NO_ZERO_IN_DATE和NO_ZERO_DATE。
重新运⾏了⼀下建表的sql语句,发现没什么卵⽤,依然Err 1067。
不要想什么姿势不对的问题了,只是全局的sql_mode没有设置⽽已,⽽这⾥设置的sql_mode对⼤局根本没有影响。
解决mysql1062主从错误
解决mysql1062主从错误1062错误----主键冲突,出现这种情况就是从库出现插⼊操作,主库⼜重新来了⼀遍,iothread没问题,sqlthread出错解决⽅案:从库操作mysql> stop slave;Query OK, 0 rowsaffected (0.26 sec)mysql> set global sql_slave_skip_counter=1;Query OK, 0 rowsaffected (0.30 sec)mysql> start slave;Query OK, 0 rowsaffected (0.04 sec)mysql> show slavestatus\G***************************1. row ***************************Slave_IO_State: Waiting formaster to send eventMaster_Host: 192.168.1.250Master_User: mysyncMaster_Port: 2503306Connect_Retry: 60Master_Log_File: mysql-bin.000005Read_Master_Log_Pos: 2909Relay_Log_File:HE1-relay-bin.000006Relay_Log_Pos: 283Relay_Master_Log_File: mysql-bin.000005Slave_IO_Running: <strong>Yes</strong>Slave_SQL_Running: <strong>Yes</strong>Replicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 2909Relay_Log_Space: 1214Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert:NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 2503306Master_UUID:f7c96432-f665-11e5-943f-000c2967a454Master_Info_File:/data/mysql/SQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has readall relay log; waiting for the slave I/O thread to update itMaster_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position: 01 row in set (0.00sec)故障模拟从库如果误插⼊mysql> insertinto helei(text) values('iii');Query OK, 1 rowaffected (0.28 sec)mysql> select *from helei;+----+------+| id | text |+----+------+| 1 | aa || 2 | bb || 3 | cc || 4 | ee || 5 | ff || 6 | gg || 7 | hh || 8 | iii |+----+------+8 rows in set (0.00sec)mysql> show slavestatus\G***************************1. row ***************************Slave_IO_State: Waiting formaster to send eventMaster_Host: 192.168.1.250Master_User: mysyncMaster_Port: 2503306Connect_Retry: 60Master_Log_File: mysql-bin.000005Read_Master_Log_Pos: 2509Relay_Log_File:HE1-relay-bin.000005Relay_Log_Pos: 480Relay_Master_Log_File: mysql-bin.000005Slave_IO_Running: <strong>Yes</strong>Slave_SQL_Running: <strong>Yes</strong>这时候从库是正常的,但由于从库私⾃插⼊数据,已经和主库不⼀致,如果这时主库也插⼊相同的数据主库此时没有8,iii这条记录mysql> select * from helei;+----+------+| id | text |+----+------+| 1 | aa || 2 | bb || 3 | cc || 4 | ee || 5 | ff || 6 | gg || 7 | hh |+----+------+7 rows in set (0.00sec)mysql>show slave status\G***************************1. row ***************************Slave_IO_State: Waiting formaster to send eventMaster_Host: 192.168.1.250Master_User: mysyncMaster_Port: 2503306Connect_Retry: 60Master_Log_File: mysql-bin.000005Read_Master_Log_Pos: 2709Relay_Log_File:HE1-relay-bin.000005Relay_Log_Pos: 480Relay_Master_Log_File: mysql-bin.000005Slave_IO_Running: <strong>Yes</strong>Slave_SQL_Running: <strong>No</strong>Replicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 1062Last_Error: Could not execute Write_rows event on table test.helei;Duplicate entry '8' for key 'PRIMARY', Error_code: 1062; handler errorHA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000005, end_log_pos2678Skip_Counter: 0Exec_Master_Log_Pos: 2509Relay_Log_Space: 851Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: NULLMaster_SSL_Verify_Server_Cert:NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: <strong>1062</strong>Last_SQL_Error: <strong>Could notexecute Write_rows event on table test.helei; Duplicate entry '8' for key'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event'smaster log mysql-bin.000005, end_log_p Replicate_Ignore_Server_Ids:Master_Server_Id: 2503306Master_UUID:f7c96432-f665-11e5-943f-000c2967a454Master_Info_File:/data/mysql/SQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State:Master_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp: 160331 09:12:02Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position: 01 row inset (0.00 sec)。
MySQL死锁及解决方案
MySQL死锁及解决⽅案⼀、MySQL锁类型1. MySQL常⽤存储引擎的锁机制MyISAM和MEMORY采⽤表级锁(table-level locking)BDB采⽤页⾯锁(page-level locking)或表级锁,默认为页⾯锁InnoDB⽀持⾏级锁(row-level locking)和表级锁,默认为⾏级锁2. 各种锁特点表级锁:开销⼩,加锁快;不会出现死锁;锁定粒度⼤,发⽣锁冲突的概率最⾼,并发度最低⾏级锁:开销⼤,加锁慢;会出现死锁;锁定粒度最⼩,发⽣锁冲突的概率最低,并发度也最⾼页⾯锁:开销和加锁时间界于表锁和⾏锁之间;会出现死锁;锁定粒度界于表锁和⾏锁之间,并发度⼀般3. 各种锁的适⽤场景表级锁更适合于以查询为主,只有少量按索引条件更新数据的应⽤,如Web应⽤⾏级锁则更适合于有⼤量按索引条件并发更新数据,同时⼜有并发查询的应⽤,如⼀些在线事务处理系统。
⼆、 MySQL死锁产⽣原因所谓死锁<DeadLock>:是指两个或两个以上的进程在执⾏过程中,因争夺资源⽽造成的⼀种互相等待的现象,若⽆外⼒作⽤,它们都将⽆法推进下去.此时称系统处于死锁状态或系统产⽣了死锁,这些永远在互相等待的进程称为死锁进程。
表级锁不会产⽣死锁.所以解决死锁主要还是针对于最常⽤的InnoDB。
死锁的关键在于:两个(或以上)的Session加锁的顺序不⼀致。
那么对应的解决死锁问题的关键就是:让不同的session加锁有次序。
三、 MySQL死锁举例分析案例⼀:在MySQL中,⾏级锁并不是直接锁记录,⽽是锁索引。
索引分为主键索引和⾮主键索引两种,如果⼀条sql语句操作了主键索引,MySQL就会锁定这条主键索引;如果⼀条语句操作了⾮主键索引,MySQL会先锁定该⾮主键索引,再锁定相关的主键索引。
在UPDATE、DELETE 操作时,MySQL不仅锁定WHERE条件扫描过的所有索引记录,⽽且会锁定相邻的键值,即所谓的next-key locking。
MySQL安装详细步骤及解决1067与2003两个问题方法
下面的是MySQL安装的图解,用的可执行文件安装的,详细说明了一下!打开下载的mysql安装文件mysql-5.5.15-win32.zip,双击解压缩,运行“setup.exe”,出现如下界面mysql安装向导启动,按“Next”继续按“Next”继续选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,我们选择“Typical”,出现下图所示界面:点击“install”以继续,出现下图界面:按“Next”继续,出现下图:按“finish”完成安装。
mysql配置向导启动界面,按“Next”继续选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration (标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
对InnoDB Tablespace进行配置,就是为InnoDB 数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述。
选择您的网站的一般mysql访问量,同时连接的数目,“Decision Support(DSS)/OLAP (20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”,我这里选“Online TransactionPro cessing(OLTP)”,自己的服务器,应该够用了,按“Next”继续是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql 数据库了,我这里启用,把前面的勾打上,Port Number:3306,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。
