MySQL

分类下相关文章

MySQL 删除 N 天前的数据

例如,我想删除日志表7天前的数据: DELETE FROM logs WHERE created_at < NOW() - INTERVAL 7 DAY 这样,就达到了只保留一周内数据的目的,节省存储空间。 ...

阅读全文...

MySQL 什么版本开始支持 utf8mb4 和 utf8 编码的

utf8mb4 MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。 utf8 MySQL从4.1版本开始支持UTF-8,也就是2003年,而今天使用的UTF-8标准(RFC 3629)是随后才出现的。 ...

阅读全文...

MySQL created_at 日期时间字段在数据变更时,自动更新

今天在使用 GoAdmin 开发后台功能时,发现 GoAdmin 没有像 Laravel 那样自带 created_at 字段更新功能。即数据发送变化时,无法自动更新 created_at 字段。 而 formList.SetUpdateFn 这个功能,需要将所有字段都处理,也不方便更新 created_at. 最终在 GoAdmin QQ 群里请教了一下大佬,得到了一个不错的解决方法,即直接使用 MySQL 的 on update 功能。 MySQL Workbench 中右键点击字段名,在右键菜单中选择最后一项 DEFAULT CURRENT_TIMESTAMP ON UPDATE CU ...

阅读全文...

MySQL 导出数据时报错 UnicodeEncodeError

一个微信的陌生人咨询,在 MySQL 导出数据时遇到问题。截图如下: 在导出数据时,报错: 'ascii' codec can't encode characters in position 9-10: ordinal not in range(128) 具体错误为: UnicodeEncodeError('ascii', u'C:\Users\\u611a\u8005\Desktop\12345.csv', 9, 11, 'ordinal not in range(128)') 看起来是 MySQL Workbench 在用 Python 做处理时,没有做好编码转换。而导出的目标目 ...

阅读全文...

什么情况下使用 redis 作为 mysql 查询结果的 cache

So if SQL Server has it's own cache, what is the benefit of an external Memcached (or similar) server? 适用 redis 的场景 复杂/耗时 MySQL 查询的结果缓存。例如,凌晨计算一次的结果,缓存到 redis。但是缓存到 MySQL 的一个新字段也可以。。。 可以设置自动过期 方便分布式部署 需要多次 MySQL 查询,及计算,然后才能生产的结果。例如,排行榜,及每一名的具体信息。 MySQL query cache 什么情况下需要开发/关闭 如果你的应用对数据库的更新很少,那 ...

阅读全文...

MySQL 时间戳转换为 datetime

使用 mysql 内置的函数 from_unixtime 进行转换 mysql> select id, time from log order by id desc limit 5; +-----+------------+ | id | time | +-----+------------+ | 897 | 1567411753 | | 896 | 1567411707 | | 895 | 1567402661 | | 894 | 1567402402 | | 893 | 1567402315 | +-----+------------+ 5 rows in set (0 ...

阅读全文...

统计数据表中 datetime 字段的日期集合

例如,MySQL 数据表中数据行的创建时间字段 created_at 为 datetime 类型。 现在要统计所有的创建日期集合,方便生成基于日期的日程表。 SELECT DISTINCT date(date_format(created_at, '%Y-%m-%d')) as created_date from some_table order by created_date desc ...

阅读全文...

MySQL 触发器的坑:ERROR 1054 (42S22): Unknown column 'xxx' in 'field list'

今天线上项目报错了 500 错误,Laravel 日志中显示 Illuminate/Database/QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'is_charge' in 'field list' (SQL: update `some_categories` set `lft` = case when `lft` >= 29 then `lft`+2 else `lft` end, `rgt` = case when `rgt` >= 29 then ...

阅读全文...

centos 6.9 install mysql 5.7

wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm rpm -ivh mysql57-community-release-el6-7.noarch.rpm yum install -y mysql-community-client mysql-community-server 参考 https://opensourcedbms.com/dbms/installing-mysql-5-7-on-centosredhatfedora/ ...

阅读全文...

MySQL 批量修改时间为 N 天前/后

例如,我想把当前数据表中 updated_at 时间字段统一修改为一天前。 修改前 SQL 语句: update some_table set updated_at = DATE_ADD(updated_at, INTERVAL -1 DAY); 修改后 如果是要改成一天后,把减号去掉即可 update some_table set updated_at = DATE_ADD(updated_at, INTERVAL 1 DAY); 参考 https://www.w3schools.com/sql/func_mysql_date_add.asp ...

阅读全文...

MySQL 新建索引中的 Order 为 ASC 或者 DESC 的区别

在使用 MySQL Workbench 新建 MySQL 数据表索引时,会看到 Order 这一项配置。 可选值为 ASC 或者 DESC。 对应的建表语句为 CREATE TABLE `blog`.`products` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `status` TINYINT NOT NULL DEFAULT 1, PRIMARY KEY (`id`), INDEX `ix_status` (`status` ASC)) ENGINE = InnoDB DEFAU ...

阅读全文...

MySQL 8 导入报错:'ascii' codec can't decode byte 0xd2 in position 26: ordinal not in range(128)

系统环境 Windows 10 MySQL Server 8.0.12 MySQL Workbench 8.0.12 现象 从另一台开发机上导出的数据库备份,无法在本机导入,MySQL Workbench 报错 21:37:49 Restoring D:\geo2.sql Error executing task: 'ascii' codec can't decode byte 0xd2 in position 26: ordinal not in range(128) Error executing task [Error 32] : 'c:\\users\\\xd2\xbc\xd2\x ...

阅读全文...

MySQL 导出时忽略指定的大数据表

如果线上数据库中一些数据量比较大的表,不经常变动,在导出时,可以选择忽略,以节省下载时间。 例如,开发环境同步线上数据库的表结构。数据量大的表就没有导出的必要。 如何知道哪些表占用的磁盘空间最大 SELECT CONCAT('my_db_name', '.', table_name), CONCAT(ROUND(table_rows / 1000000, 2), 'M') rows, CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G ...

阅读全文...

Windows 上将 excel 导入 mysql

Windows 上的字符编码总是让人无语。 手头有个 excel 文件需要导入 mysql。印象中曾经把 csv 导入过 sql server。 我想 mysql 肯定也支持把 csv 导入。 mysql workbench 中,右键点击待导入的目标数据表,选择 Table Data Import Wizard 可以看到,支持 csv 和 json 的格式导入。 将 Excel 转换为 utf8 格式的 CSV 使用 WPS 先打开 excel 文件,另存为 csv 的格式。 但是问题来了,mysql workbench 压根就不支持 WPS 生成的 csv 文件的字符编码,显示为乱码。 ...

阅读全文...

WSL Ubuntu 18.04 中安装 MySQL 5.7

sudo apt install mysql-server-5.7 sudo mysqld 启动失败 2018-08-15T01:08:41.167354Z 0 [ERROR] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock. 2018-08-15T01:08:41.167378Z 0 [ERROR] Unable to setup unix socket lock file. 修改启动方式 sudo service mysql start 之后问题解决,但是没有默认密码。设置 root 账号 ...

阅读全文...