mysql修改字段防止锁表

摘要:
步骤1:修改大表、addcolumn或dropcolumn的字段,操作完成后将锁定该表。此时,查询ok、insert和update将等待锁定。

步骤1:

修改一个大表的字段,add column或者drop column,操作后表会锁住,此时查询ok,insert和update会一直等待锁。如图。

mysql修改字段防止锁表第1张

解决方案:

1、基于要操作的表创建一个临时表,执行要修改的操作,比如add column或者drop column

2、把表内容导出到文件(注意不要用intsert into table_copy select * from table,因为这样也很慢,也会锁表)

登陆mysql服务器,使用下面命令,其实也会锁表,只是下面的导出会更快而已。

select * from cms_gift_code into outfile '/usr/local/mysql/data/cms_gift_code.txt' fields terminated by ',' line terminated by '
';

3、把文件导入到临时表

同上(最后括号里面的是字段名,可以不加,不加的前提是两张表结构一样)

load data infile '/usr/local/mysql/data/cms_gift_code.txt' into table cms_gift_code_copy fields terminated by ',' lines terminated by '
' (id,gift_id,code,type,status,created_at,updated_at,phone,openid,other,user_ip);

4、对换临时表和正式表的表名。

免责声明:文章转载自《mysql修改字段防止锁表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇怎么使用vscode合并分支Debian忘记密码重置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用phpMyAdmin批量修改Mysql数据表前缀的方法

多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分。而如何批量修改已有数据库的前缀名呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍的是相对简单的批量修改数据库中表前缀的方法,适用于修改数据库中相同前缀且数据表较多的情况。 此例中假定修改名为“www_sdck_cn”的数据库中前缀为“p...

关于使用navicat将mdb文件导入mysql数据库

公司最近下发了任务,要把gdb,sde,mdb格式的数据文件统一放入mysql数据库中,作为后台数据库,支持地理信息开发平台。首先来研究mdb格式的文件。.mdb格式的文件,一般都是office access来编写的,虽然2010之后,access所保存出的默认数据库的格式都是.accdb,不过不影响我们的正常使用,就把它当成.mdb文件实用就行。好了,闲...

项目中应该怎么选择MySQL的事务隔离级别

知识点总结 1.数据库默认隔离级别: mysql :Repeatable Read; oracle、sql server :Read Commited 2.mysql binlog的格式三种:statement,row,mixed 3.为什么mysql用的是Repeatable Read而不是Read Commited:在 5.0之前只有statement...

深入学习之mysql(三)单表操作

1、创建表的结构和数据 CREATE TABLE `t_student`( `id` INT PRIMARY KEY, `stuName` VARCHAR(10) NOT NULL, `age` INT NOT NULL, `sex` VARCHAR (4), `gradeName` VARCHAR(10) NOT NULL ); 插入数据: INSERT...

application.properties文件配置

  在application.properties文件中配置mysql连接配置文件。 spring.datasource.url = jdbc:mysql://localhost:3306/DatebaseName(自己数据库名)spring.datasource.username = rootspring.datasource.password = 12...

mysql修改表、字段、库的字符集

在一次导入数据表(MYISAM)的经历:复制过来的表打开后中文出现乱码,肯定是字符集出现了不致的问题,所以从原数据库导出.sql文件,修改其中的创建表的语句,加入字符集DEFAULT CHARSET=gb2312 用这个导入 mysql -uroot -p --default-character-set=gb2312 databasename>E:o...