При переносе или восстановлении БД mysql может возникнуть проблема с символами “и” “ш” из-за неправильной перекодировки.
Решение проблемы через ssh в одну строчку( в начале строки указать переменные DB_NAME DB_USER DB_PASS):
DB_NAME="Имя Базы";DB_USER="Имя Пользователя Базы";DB_PASS="Пароль Пользователя Базы";DB_CONNECT="mysql -N -u $DB_USER -p$DB_PASS $DB_NAME"; for i in `echo "show tables;" | $DB_CONNECT`; do for j in ` echo "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='$DB_NAME' AND TABLE_NAME='$i'; " | $DB_CONNECT`;do echo "UPDATE $i SET $j = REPLACE($j, CONCAT( CHAR(209), CHAR(63) ), CONCAT( CHAR(209), CHAR(136) )); UPDATE $i SET $j = REPLACE($j, CONCAT( CHAR(208), CHAR(63) ), CONCAT( CHAR(208), CHAR(152) ) );" | $DB_CONNECT; echo $i ;done ;done
И красиво можно bash скриптом:
#!/bin/bash
DB_NAME="Имя Базы"
DB_USER="Имя Пользователя Базы"
DB_PASS="Пароль Пользователя Базы"
DB_CONNECT="mysql -N -u $DB_USER -p$DB_PASS $DB_NAME"
for i in `echo "show tables;" | $DB_CONNECT`
do
for j in `echo "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='$DB_NAME' AND TABLE_NAME='$i';" | $DB_CONNECT`
do
echo "UPDATE $i SET $j = REPLACE($j, CONCAT( CHAR(209), CHAR(63) ), CONCAT( CHAR(209), CHAR(136) ));" | $DB_CONNECT
echo "UPDATE $i SET $j = REPLACE($j, CONCAT( CHAR(208), CHAR(63) ), CONCAT( CHAR(208), CHAR(152) ));" | $DB_CONNECT
done
echo $i
done