MyBlogs - Mysql
type: channel
link: https://www.myblogs.xyz/index.php/tag/mysql/
items: Mac更新系统胡Mysql自动无法启动
items: MyISAM和 InnoDB 的基本区别？索引结构如何实现？
items: Mysql获取某个表的所有字段名
items: MySQL之——崩溃-修复损坏的innodb：innodb_force_recovery
items: Mysql两表联合更新
items: mysql批量修改表前缀

Mac更新系统胡Mysql自动无法启动
type: item
date: 2022-12-03T10:33:30+08:00
description: 由于更新后兼容问题导致，可以直接通过命令启动sudo /usr/local/mysql/support-files/mysql.server start

MyISAM和 InnoDB 的基本区别？索引结构如何实现？
type: item
date: 2022-03-31T21:15:00+08:00
description: 数据结构MyISAM：每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始，扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。InnoDB：所有的表都保存在同一个数据文件中（也可能是多个文件，或者是独立的表空间文件），InnoDB表的大小只受限于操作系统文件的大小，一般为2GB。A、MyISAM类型不支持事务，表锁，易产生碎片，要经常优化，读写速度较快，适合用于频繁查询的应用；B、InnoDB类型支持事务，行锁，有崩溃恢复能力，读写速度比MyISAM慢，适合于插入和更新操作比较多的应用，空间占用大，不支持全文索引等。

Mysql获取某个表的所有字段名
type: item
date: 2022-02-27T18:32:00+08:00
description: mysql安装成功后可以看到已经存在mysql、information_schema和test这个几个数据库，information_schema库中有一个名为COLUMNS的表，这个表中记录了数据库中所有表的字段信息。知道这个表后，获取任意表的字段就只需要一条select语句即可。例如：select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name'; 上述的做法有一点问题，如果多个数据库中存在你想要查询的表名，那么查询的结果会包括全部的字段信息。通过DESC information_schema.COLUMNS可以看到该表中列名为TABLE_SCHEMA是记录数据库名，因此下面的写法更为严格select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name' and table_schema = 'your_db_name'; 取字段注释Select COLUMN_NAME 列名, DATA_TYPE 字段类型, COLUMN_COMMENT 字段注释 from INFORMATION_SCHEMA.COLUMNS Where table_name = 'companies'##表名 AND table_schema = 'testhuicard'##数据库名 AND column_name LIKE 'c_name'##字段名

MySQL之——崩溃-修复损坏的innodb：innodb_force_recovery
type: item
date: 2022-01-28T21:50:00+08:00
description: 1、配置my.cnf配置innodb_force_recovery = 1或2——6几个数字，重启MySQL2、导出数据脚本mysqldump -uroot -p123456 test > test.sql导出SQL脚本。或者用Navicat将所有数据库/表导入到其他服务器的数据库中。注意：这里的数据一定要备份成功。然后删除原数据库中的数据。3、删除ib_logfile0、ib_logfile1、ibdata1备份MySQL数据目录下的ib_logfile0、ib_logfile1、ibdata1三个文件，然后将这三个文件删除4、配置my.cnf将my.cnf中innodb_force_recovery = 1或2——6几个数字这行配置删除或者配置为innodb_force_recovery = 0，重启MySQL服务5、将数据导入MySQL数据库mysql -uroot -p123456 test < test.sql; 或者用Navicat将备份的数据导入到数据库中。如果在导入数据过程中发生tablespace不存在的问题，请删除data目录相应database下的文件。此种方法下要注意的问题： 1、ib_logfile0、ib_logfile1、ibdata1这三个文件一定要先备份后删除； 2、一定要确认原数据导出成功了 3、当数据导出成功后，删除原数据库中的数据时，如果提示不能删除，可在命令行进入MySQL的数据目录，手动删除相关数据库的文件夹或者数据库文件夹下的数据表文件，前提是数据一定导出或备份成功。————————————————原文链接

Mysql两表联合更新
type: item
date: 2021-09-24T17:15:00+08:00
description: 联合查询更新主要场景用于，比如新加字段需要存储另外一个表相关数据，同步两种比状态等update maintain m LEFT JOIN vehicle v on m.number=v.number set m.vehicle_id = v.vehicle_id where m.vehicle_id = 0 maintain表新加字段vehicle_id车辆ID默认是0，需要同步一下之前数据，通过相同编号更新

mysql批量修改表前缀
type: item
date: 2020-10-13T20:23:00+08:00
description: 修改表名SELECT CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO b_', substring( table_name, 2 ), ';' ) FROM information_schema.TABLES WHERE table_name LIKE 'a_%';