在 PHP 中格式化并高亮 SQL 语句

jdorn/sql-formatter 是一个轻量级的 PHP 类用于格式化 SQL 语句。 它支持自动进行缩进、添加换行,甚至还支持语法高亮。

January 10, 2019 · Wi1dcard

数据库血的教训

不用扩展实现的 PHP 加密混淆,没有靠谱的产品,还有可能导致逻辑出问题,而且无法检查。 由于环境因素的差异在 PHP 内产生的影响是非常巨大的,做 SaaS (服务器由客户运维)还是不用 PHP 为好。 「简单易学」、「向前兼容性好」的特质使得 PHP 的代码可能极致优雅,也有可能一滩烂泥;「可以运行」的代码或许存在巨大的可读性差距、性能差距。 MySQL BINLOG 也不是那么好玩的… 若是数据库结构有改动,想要实现闪回恐怕不是那么简单。 准备开坑 Golang。 难受。

July 17, 2018 · Wi1dcard

升级 MySQL 5.7 到 8.0 遇到的坑

前几天手贱啥也没看执行 brew upgrade,随后就后悔了… 凡事没有一帆风顺,在此总结升级经验,以供后人参考。 0x00 场景:执行 mysql.server start 提示 The server quit without updating PID file mysql.server start。 解决: cd /usr/local/var/mysql/,切换到 MySQL 数据目录(macOS 使用 brew 安装的 MySQL 默认数据存储路径如上)。 rm *.

June 16, 2018 · Wi1dcard

AMH 面板重复加载 MySQL 扩展

真是天下没有不坑的面板… 相继宝塔和 WDCP 之后,AMH 也出了问题。 0x00 表象 报错如下: PHP Warning: Module 'mysql' already loaded in Unknown on line 0 logs/amh-php-errors.log 文件内也有偶尔出现的记录。

June 14, 2018 · Wi1dcard

MySQL 在所有字段内搜索替换文本

又是项目所需,继续造轮子。替换指定数据库的「所有表」内「所有记录」的「所有字段」的值,以下为 SQL 语句。 0x00 创建存储过程 CREATE PROCEDURE `replace_table` (IN `orig_str` VARCHAR(100), IN `new_str` VARCHAR(100), IN `db_name` VARCHAR(100), IN `t_name` VARCHAR(100)) BEGIN DECLARE cul_name VARCHAR(100); DECLARE done int default 0; DECLARE cur CURSOR FOR SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.

June 12, 2018 · Wi1dcard

MySQL 批量更新所有字段 Collation

今天项目部署遇到个坑,之前建数据库的时候,把所有的 collation 都写成了 utf8,在测试服务器上也没怎么注意,部署正式服务器果断用 mb4,故需要修改上百个字段的 collation。 根据一次可以,两次能忍,三次绝对不行的懒人原则 orz,决定写个脚本实现一键修改,废话不多说先去网上找了个轮子。 referer: https://my.oschina.net/xuqiang/blog/507629 经过一番修改和摸索,总结出如下存储过程: begin declare f_name varchar(100); declare b int default 0; /*是否达到记录的末尾控制变量*/ -- 注意修改下面的数据库名称 wsm_aliyun  declare table_name cursor for SELECT TABLE_NAME FROM information_schema.

September 6, 2017 · Wi1dcard