需要开启 Mysql 日志,即可实现历史执行 SQL 记录
1、设置
-- SET GLOBAL log_output = 'TABLE';SET GLOBAL general_log = 'ON'; //日志开启
-- SET GLOBAL log_output = 'TABLE'; SET GLOBAL general_log = 'OFF'; //日志关闭
2、查询
SELECT * from mysql.general_log ORDER BY event_time DESC;
3、清空表(delete对于这个表,不允许使用,只能用truncate)
-- truncate table mysql.general_log;
ps:在查询到所需要的记录之后,应尽快关闭日志模式,占用磁盘空间比较大
1. 修改单表
ALTER TABLE TABLENAME ENGINE=InnoDB;
2. 修改多表
SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' ENGINE=InnoDB;' )
FROM information_schema.tables
WHERE table_schema = 'DBNAME'
LIMIT 0 , 10000;
使用说明:
1. 将以上SQL语句中的 DBNAME 替换成需要修改的数据库名称。
2. 执行SQL,这个时候还没有修改,只是给了一个查询结果。
3. 将查询结果复制,去掉前后的引号,然后执行。
最近因为工作需要,需要设计全国地区的三级联动,我也查了不少前端实现方式 不过都有些过时,一些地区的更新和变动后,这些实现方式并没跟着变动,所以我就上全国行政区划信息查询平台照着各地去进行了繁琐的查询和处理,并形成了以下的数据表,现在分享出来供大家参考和使用。
注意这个数据的可靠性并非100%无误,如果有小问题自己变动,同时我也希望你能将碰到的错误回复到此博客下
数据表设计
数据库默认是mysql,如果你是oracle,自己做相应的变更。
CREATE TABLE sys_region (
region_id varchar(10) NOT NULL COMMENT '地区主键编号',
region_name varchar(50) NOT NULL COMMENT '地区名称',
region_short_name varchar(10) DEFAULT NULL COMMENT '地区缩写',
region_code varchar(20) DEFAULT NULL COMMENT '行政地区编号',
region_parent_id varchar(10) DEFAULT NULL COMMENT '地区父id',
region_level int(2) DEFAULT NULL COMMENT '地区级别 1-省、自治区、直辖市 2-地级市、地区、自治州、盟 3-市辖区、县级市、县',
PRIMARY KEY (region_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='地区表';
数据表注释很明确,主键为整形,地区名称,地区缩写(只有省份有缩写,其他的为null),行政地区编号均来自于地区平台上,地区父id是省市县三级管理关系比如海淀区的父id就是北京市的地区主键编号,我同时增加了地区级别,方便那些单纯查某个级别的数据,比如级别为1的就是省、自治区、直辖市。
目前省、自治区、直辖市的地区父id为”-1”,如下图:
二级结构如下(以北京为例):
SELECT * FROM sys_region WHERE Region_Parent_Id = 1000000
基本结构如上面图中所示,后期你可以做一个管理菜单,进行增删改查,可以应对数据的变动,系统里使用到中国地区可以从数据表中查询记录并展示到页面的下拉列表中
SQL 执行文件下载地址:
https://wxzzz.com/wp-content/uploads/2020/01/sys_region.zip