Как найти несовместимый скрипт по `grep` при обновлении mysql? - PullRequest
0 голосов
/ 03 ноября 2018

Я обновляю mysql с 5.1 до 5.5.
В этом сообщении , упомянуто:

В MySQL 5.5.3 были внесены некоторые изменения в разрешение псевдонимов в операторах DELETE для нескольких таблиц, чтобы больше невозможно было иметь непоследовательные или неоднозначные псевдонимы таблиц.

Поскольку Mysql не предоставил инструменты, которые помогли бы нам пересмотреть несовместимые места. Затем мне нужно использовать grep, чтобы найти DELETE FROM tablename AS в моих файлах php и перейти к DELETE FROM tablename USING tablename AS.

Мое испытание: grep -r -o -i -a 'delete from \w\{1,\} as \w\{1,\}' / var / www
но не удалось.

Как найти DELETE FROM tablename AS?

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете использовать

grep -rEoia 'delete from[ \t]+[^ \t]+[ \t]+as[ \t]+[^ \t]+' /var/www

Или,

grep -rEoia 'delete from[ \t]+[a-zA-Z0-9_]+[ \t]+as[ \t]+[a-zA-Z0-9_]+' /var/www

В регулярном выражении \w обычно обозначает буквы, цифры и символ _.

Опция -E необходима для поддержки квантификатора +. Если вы не можете использовать его, используйте

grep -roia 'delete from[ \t]\{1,\}[a-zA-Z0-9_]\{1,\}[ \t]\{1,\}as[ \t]\{1,\}[a-zA-Z0-9_]\{1,\}' /var/www
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...