分类: SQL
-
本文介绍了在 Laravel 6 中实现 MySQL 表 UUID 类型字段的操作过程。通过数据库迁移添加了 char(36) 类型的字段并建立索引,在模型构造方法中使用 Str::orderedUuid() 方法设置值以利用排序功能。操作过程中遇到了批量赋值错误,通过在模型中设置相应属性为可批量赋值解决了问题,最终生成的 SQL 符合预期。
-
执行 SQL 语句时报错 1093,提示不能在 FROM 子句中指定目标表进行更新。参考 MySQL 官方文档得知,在 MySQL 中无法修改 SELECT 部分使用的同一个表。解决方法是将表连接到自身,使 MySQL 将表视为两个不同的事物,从而允许执行破坏性更改操作。
-
本文记录了在 Laravel 6 中将打印出的 SQL 复制到 MySQL 5.7 执行时结果不一致的问题。程序查询返回 79 条数据,而数据库直接执行返回 81 条。排查发现 whereRaw 语句中的参数绑定存在差异,通过将 SQL 改为原生形式,或者使用 addslashes 对反斜杠进行转义,最终使程序执行结果变为 81 条,与数据库执行结果一致。
-
在 MySQL 5.7 中使用 LIKE 语句搜索包含反斜杠的数据时,直接使用单反斜杠无法匹配目标结果,需要使用双反斜杠进行转义。这是因为 MySQL 字符串解析器和模式匹配过程会先后各剥离一次转义字符,导致最终只剩下一个反斜杠进行匹配,因此必须在 SQL 语句中写入四个反斜杠才能成功查到以 layouts 开头且包含反斜杠的记录。
-
针对 Laravel 6 中数据库字段下划线命名与 GraphQL 接口响应驼峰命名不一致的问题,文章探讨了两种转换方案。对比了遍历数组重构与在 Select 查询语句中直接重命名字段两种思路,最终决定采纳在 SQL 查询中重命名的方案。经测试,接口响应字段成功转换为驼峰形式,符合预期。
-
在 Navicat for MySQL 中导入约 35MB 的 SQL 文件时,执行报错 2006 – MySQL server has gone away。经排查,该问题源于 MySQL 配置文件中 max_allowed_packet 的默认设置过低。通过在 my.ini 配置文件中将该参数的值修改为 40M,并重启 MySQL 服务,再次尝试导入文件后,导入成功且不再报错。
-
本文记录了将 Laravel 8.x 项目 LaraBBS 部署至 Heroku 并使用 ClearDB 实现 MySQL 数据库连接的过程。文中详细说明了 Procfile 创建、应用构建包声明及代码推送等步骤,并重点解决了数据库索引长度超限、数据迁移冲突及 Composer 包安装失败等问题。最终通过修正代码配置及导入本地数据,成功验证了线上应用的部署。
-
执行 Docker 命令将 SQL 文件导入 MySQL 容器时出现安全警告,且数据库表显示为空。经排查,最终使用 docker cp 命令将本地 SQL 文件复制至容器内,随后进入容器登录 MySQL,通过执行 source 命令成功完成数据库导入操作。
-
本文针对公有云com环境数据向csp环境迁移时程序版本不一致且无法升级的问题,介绍了实现流程。通过分析Git日志找出14个数据库迁移文件的差异,确认多出的SQL主要为表结构调整。在无法统一结构的情况下,将两个数据库导入本地,编写支持租户ID参数的迁移命令,使用事务处理并逐一迁移表。文章记录了pa_plan表的迁移过程,成功将4个租户的数据迁移至csp环境,并探讨了潜在的主键冲突及关联表处理问题。
-
针对 MySQL 容器查询时报错提示不兼容 ONLY_FULL_GROUP_BY 的问题,文章记录了在容器内连接 MySQL 并临时修改 sql_mode 的操作过程。通过执行 set global 命令调整设置后,查询 SQL 不再报错且接口响应恢复正常,这是一种临时的解决方案,若容器升级或重新部署则需要重新执行。
