0
点赞
收藏
分享

微信扫一扫

数据库Mysql遇到的总结20200212

柠檬的那个酸_2333 2022-09-02 阅读 95


文章目录

  • ​​数据库Mysql总结20200212​​
  • ​​mysql 数据库改名​​
  • ​​方式一​​
  • ​​方式二: 自己写脚本实现​​
  • ​​navicat导入SQL文件太慢​​
  • ​​Linux下my.ini/my.cnf文件路径​​
  • ​​MySQL error 1452​​
  • ​​删除外键​​
  • ​​增加外键的方法​​
  • ​​mysql 1022error​​
  • ​​删除数据库时Lock​​
  • ​​背景​​
  • ​​原因和解决方法​​
  • ​​参考链接​​

数据库Mysql总结20200212

mysql 数据库改名

方式一

​rename database oldname to newname ;​

这条命令仅在Mysql5.1.7添加,5.1.23删除

方式二: 自己写脚本实现

#!/bin/bash
mysql -uroot -e "create database if not exists db_ym_account"
list_table=$(mysql -uroot -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='foundwant'")

echo $list_table
for tab in $list_table
do
echo "$tab"
mysql -uroot -e "rename table foundwant.$tab to db_ym_account.$tab"
done

脚本功能描述:我们想把db中foundwant的库名改成db_ym_account;
实质上,是创建一个db_ym_account数据库,然后把库foundwant中的表记录下来, 然后使用rename命令将表所属的库改成新的库名称

navicat导入SQL文件太慢

解决办法

my.ini添加:
max_allowed_packet=500M

Linux下my.ini/my.cnf文件路径

linux版本是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf
或者 : /usr/my.cnf 下

MySQL error 1452

外键相关的错误

删除外键

首先查询外键的名称

使用SQL语句查询:​​show create table test_table(表名)​

执行删除外键约束的SQL语句

alter table test_table drop foreign key test_table_ibfk_1

增加外键的方法

有两种方式

  1. 创建的时候建立外键

/*保存表其他信息: 是否共享,表对应主题*/
CREATE TABLE T_TABLE_OTHER (
ID BIGINT AUTO_INCREMENT,
TABLE_ID BIGINT,
`IS_SHARE` int(11) DEFAULT NULL COMMENT '表是否是共享表 1是 0 否',
`GROUP_ID` bigint(20) DEFAULT NULL COMMENT '小主题id',
PRIMARY KEY (ID),
FOREIGN KEY (TABLE_ID) REFERENCES T_TABLE(ID) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE InnoDB, CHARSET UTF8;

  1. 在表已存在的时候创建外键约束

alter table T_TABLE_OTHER add constraint T_TABLE_OTHER_ibfk_1 foreign key(TABLE_ID) REFERENCES T_TABLE(ID);

注意: 在表已存在的情况下并且有数据的情况下,添加外键的时候,需要注意数据 是正确的(外键字段值和原表能够对应上),否则会添加失败

mysql 1022error

mysql 创建外键时 提示 [Err] 1022

删除数据库时Lock

背景

在已经备份的情况下,删除这个数据库,执行删除命令后,程序一直卡住,没有相应,使用linux命令查询,显示没有删除掉,就这样一直卡住

原因和解决方法

远程主机登录 ​​show full processlist;​​​ 观察 state 和info 两列,查看有哪些相关的线程,然后发现之前远程删除的时候由于网络中断,锁表了。
所以导致再次登录的时候删除操作无响应。

解决

使用Kill命令杀死线程 ​​kill + 显示的前面的id​

原因:

个人经验是关键字重复,或者外键已经重复存在,所以先进行查看是否已存在。否则会添加失败

参考链接

  • ​​https://www.itdaan.com/blog/2016/11/25/137014340f43b1f2c612d2301fe9b6c2.html​​


举报

相关推荐

0 条评论