MySQL

分类下相关文章

MySQL 某个字段排序,按照指定值的顺序

没想到这么多年还是要继续写微信小程序会员卡开卡、扣卡这种逻辑,又是脑子炸裂的一天。 排序需求 会员卡使用状态字段,在数据库中的对应值如下 Status int // 卡状态。0 待使用; 1 已使用; 2 使用完; 3 已退卡; 4 退卡中 如果想按照如下顺序排序: 待使用 已使用 退卡中 使用完 已退卡 那么就不能直接使用 order by status asc 这种的方式。 指定值排序 解决方法是使用 SELECT * FROM user_card ORDER BY FIELD(status, 0, 1, 4, 2, 3) 注意: 如果字段包含的值不在指定的值列表中,则该字段的值 ...

阅读全文...

MySQL 查询日期类型字段在某个月的数据

在做的一个财务预算管理小程序部门支出流水功能,需要能查询出指定月份的财务流水数据。 MySQL 数据库中存储了财务支出条目发生的日期,需要能通过年月来过滤查询。 例如,我要查询 2022 年 3 月份的所有财务数据。 方法一(推荐) SELECT * FROM financial_history WHERE `date` BETWEEN '2022-03-01' AND LAST_DAY('2022-03-01') MySQL LAST_DAY 函数返回当前 date 或 datetime 类型值对应月份的最后一天。 MySQL LAST_DAY() returns the last d ...

阅读全文...

ERROR 1170 (42000): BLOB/TEXT column 'title' used in key specification without a key length

今天在 MySQL 中建表时,报错 ERROR 1170 (42000): BLOB/TEXT column 'title' used in key specification without a key length 从错误信息字面上看,是 text 类型作为唯一索引时,必须指定长度。 出错的建表 SQL CREATE TABLE `question` ( `id` INT NOT NULL AUTO_INCREMENT, `title` TEXT NULL, `answers` VARCHAR(255) NULL, `created_at` DATETIME NULL ...

阅读全文...

MySQL 一键导出全部数据表的建表 SQL 语句

在开发时,经常要将最新的 MySQL 建表语句保存到 Git 项目中作为备份。 以方便在新的开发环境快速搭建数据库环境。 一张一张表复制黏贴太慢了,有没有一次导出全部建表语句的方法? 导出方法 MySQL Workbench 客户端,同时选中多个数据表,右键 - Copy to clipboard - Create Statement. 即可复制到剪切板,再黏贴到一个本地文件中即可。 ...

阅读全文...

mysql 导出文件以 utf8mb4 编码

由于 mysql 导出数据中包含了大量的 emoji 表情,而 emoji 表情是以 utf8mb4 进行编码的。 发现用记事本打开 mysql workbench 8.0 导出的 sql 文件,里面的 emoji 表情都是乱码。说明导出文件的文件编码是错误的。 正确做法,命令行版 以导出数据库 test_db 为例: mysqldump --default-character-set=utf8mb4 -uuser -p test_db > data.sql mysql workbench 如何操作 TODO ...

阅读全文...

mysql workbench need visual c++ 2019 解决方法

在 Windows 10 系统上安装 MySQL Workbench 8.0,弹窗提示报错: mysql workbench need visual c++ 2019 然后提示你去官方手动下载依赖。。。 visual c++ 2019 下载地址 https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads 只需要下载 VC_redist.x64.exe 这一个安装文件,只有 14M 大,本以为需要几个G。 安装之后会提示重启,然后就可以正常安装 MySQL Workbenc ...

阅读全文...

WSL 安装 mysql8 报错:cannot read realtime clock: Invalid argument

在 Windows 10 WSL Ubuntu 20.04 上安装 mysql 8 报错: cannot read realtime clock: Invalid argument 解决方法 wget https://launchpad.net/~rafaeldtinoco/+archive/ubuntu/lp1871129/+files/libc6_2.31-0ubuntu8+lp1871129~1_amd64.deb sudo dpkg --install libc6_2.31-0ubuntu8+lp1871129~1_amd64.deb sudo apt-mark hold li ...

阅读全文...

wordpress MySQL 8.0 报错:Error establishing a database connection

迁移了旧有的一套 wordpress 网站到新的服务器上,更改域名解析之后,报错: Error establishing a database connection 系统环境 Ubuntu 20.04 PHP 7.0 MySQL 8.0 问题排查 看上去是很简单的账号,密码问题。我确认了半天,发现 mysql 可以正常登陆,wp-config.php 中的也没有写错。 但是依旧报这个错误。感觉没有头绪了。 wordpress debug 开关打开 define( 'WP_DEBUG', true ); 发现详细错误如下: Warning: mysqli_real_connect(): ...

阅读全文...

ubuntu 20.04 apt 安装 mysql 8.0

在 Ubuntu 22.04 LTS 上验证过,安装方式是一样的。 ubuntu 20.04 apt 安装 mysql 8.0 sudo apt update sudo apt install mysql-server 此时 mysqld 服务已启动。 启动 mysql 若 mysql 没有自动启动,执行: sudo service mysql start 使用 mysql_secure_installation 进行安全配置 mysql_secure_installation 如果是在 WSL 上,执行 sudo mysql_secure_installation 运行之后,按照提 ...

阅读全文...

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 ...

阅读全文...