saber酱的抱枕

Fly me to the moon

08/5
06:31
学习

在sql中使用正则表达式

前几天我对数据库进行了一次批量修改,但是今天发现有些地方改出了毛病,需要针对这些地方再进行修改。

什么问题呢?就是内链变成了以“/”开头的链接。问题在于http后面只有一个斜杠,所以要修复这个问题。

但是修复时还有个问题,就是如果直接匹配“/”的话,正常链接的“http://”也会被匹配到。为了避免这种失误,我只好尝试用正则表达式来解决。

我对着教程折腾许久,终于用术语叫做“零宽度负回顾后发断言”的方式达成了目标,累觉不爱。

/{1}+(?!/{1})
// 意思是 匹配“/”,但需要它后面不再有其他斜杠

然后我就去MySQL里用这个正则去查询一下试试:

select post_content from wp_posts where post_content REGEXP '/{1}+(?!/{1})';
// 报错  SQL错误(1139):Got error 'repetition-operator operand invalid' from regexp

emmmmm……上面的语法没错,但是问题在于MySQL对正则表达式的支持很简单,不支持零宽断言,所以悲剧了。所以这篇文章不幸成了反面教材……

后续:
我用了笨办法,先导出数据库,用文本编辑器替换之后再导回去,姑且也算解决了问题(逃

在sql中使用正则表达式

07/7
03:28
学习 软件

使用MySQL命令行恢复phpMyAdmin导出的sql文件

数据库的备份与恢复是个常见的问题,但是不同备份工具备份出来的.sql文件内容与格式不尽相同。

对于phpMyAdmin导出的sql文件,似乎用phpMyAdmin恢复比较容易。但我用其他一些MySQL数据库管理工具经常无法恢复成功(如使用Navicat for MySQL、HeidiSQL运行转储的sql文件,没有任何效果)。今天我试了下用MySQL命令行恢复phpMyAdmin导出的sql文件,感觉比较好使,记录一下。

恢复之前先手动创建一个空的数据库,编码和排序方式按需要选择。比如dedecms和WordPress默认的都是utf8_general_ci。

之后运行MySQL命令行,输入密码开始使用。

之后依次输入命令(按需要修改):

use databasename;
set names utf8;
source d:\desktop\simple.sql;

如下:

 database mysql phpmyadmin sql 恢复 数据库

记得输入分号,否则第二个命令会跑偏。

输入第三条之后就开始恢复了,等到执行完毕就ok了。

其实前两条命令,有些工具导出的sql文件里已经有了,有的没有(phpMyAdmin导出的就没有,这应该也是直接运行它备份的sql文件时无法恢复数据的原因)。所以有些工具备份的sql文件可能比较容易恢复,有的就要手动输入命令了。

使用MySQL命令行恢复phpMyAdmin导出的sql文件

01/7
15:09
学习

dedecms内容页使用sql语句调用文章正文

这实在有够蛋疼的,因为 dedecms有它自己的标签,一个{dede:field.body/}标签就会调出当前文章的正文。但是今天遇到了一个不明原因的情况,这个标签不起效,正文处什么东西都出不来,真是醉了。清除系统缓存无效,各种百度无效,最终用sql解决了。

{dede:sql sql='Select body from dede_addonarticle where aid=~aid~'}[field:body/]{/dede:sql}

dedecms内容页使用sql语句调用文章正文