Size: a a a

2020 June 27

AG

Alex G in ru_mysql
Слышал Шорохи
Это где сопровождение заявки ведёт?
да
источник
2020 June 28

NM

Narek Markosyan in ru_mysql
доброе утро.. словили такую ошибку General error: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation ‘=‘.
Не нашел другого решения кроме как поменять поле с utf8 на utf8mb. А если мне не нужен utf8mb, получается мне нужно будет на уровне кода проверят все значения которые передаю в запрос?
источник

В

Вячеслав in ru_mysql
Narek Markosyan
доброе утро.. словили такую ошибку General error: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation ‘=‘.
Не нашел другого решения кроме как поменять поле с utf8 на utf8mb. А если мне не нужен utf8mb, получается мне нужно будет на уровне кода проверят все значения которые передаю в запрос?
Поправьте, если я не прав...


Можно конвертонуть все в универсальную кодировку:

#!/bin/bash

ipAddress="192.168.0.42";

mysqlPort="3306";

MSQL="mysql --defaults-file=/root/.secrets/mysql/root -h${ipAddress} -P${mysqlPort}";

for database_name in $(${MSQL} -BNe "SHOW DATABASES;" | grep -v -E '(^information_schema$|^performance_schema$|^mysql$|^sys$)'); do

 ${MSQL} -e "ALTER DATABASE ${database_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;";

 for table_name in $(${MSQL} -BNe "SHOW TABLES IN ${database_name};"); do

   ${MSQL} -e "ALTER TABLE ${database_name}.${table_name} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;";

 done;

done;


А потом добавить вот такой конфиг файлик:

echo "\

#[client]
#default-character-set = utf8

#[mysql]
#default-character-set = utf8

[mysqld]
character-set-server = utf8
#collation-server = utf8_general_ci
collation-server = utf8_unicode_ci
" > /etc/mysql/mysql.conf.d/charset-utf8.cnf
источник

NM

Narek Markosyan in ru_mysql
изменение кодировки на utf8mb4 должен же хоть на немного замедлить запись/чтение? наскоьлко я помню это хорошо оптимизировано в 8-й версии, а в 5.7 пока медленный
источник

В

Вячеслав in ru_mysql
Narek Markosyan
изменение кодировки на utf8mb4 должен же хоть на немного замедлить запись/чтение? наскоьлко я помню это хорошо оптимизировано в 8-й версии, а в 5.7 пока медленный
За это не знаю, у меня 8 перкона, а в вопросе версия не указана.
источник

В

Вячеслав in ru_mysql
Narek Markosyan
изменение кодировки на utf8mb4 должен же хоть на немного замедлить запись/чтение? наскоьлко я помню это хорошо оптимизировано в 8-й версии, а в 5.7 пока медленный
Так, обновить на 8-ю😉
источник

NM

Narek Markosyan in ru_mysql
Вячеслав
Так, обновить на 8-ю😉
сказать легче чем сделать) но работы в эту сторону вдутся
источник

В

Вячеслав in ru_mysql
Narek Markosyan
сказать легче чем сделать) но работы в эту сторону вдутся
Та, норм, я только что закончил
источник

NM

Narek Markosyan in ru_mysql
подводные камни были?
источник

В

Вячеслав in ru_mysql
Narek Markosyan
сказать легче чем сделать) но работы в эту сторону вдутся
runCommand() {
 echo "${@}";
 ${@};
};

 runCommand "apt-get update";

 runCommand "apt-get install -y lsb-release";

 runCommand "apt-get install -y gnupg2";

 runCommand "wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb";

 runCommand "dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb";

 runCommand "percona-release setup ps80";

 runCommand "apt-get update";

 runCommand "apt-get install -y percona-server-server";

 runCommand "rm -f percona-release_latest.$(lsb_release -sc)_all.deb";
источник

NM

Narek Markosyan in ru_mysql
это да, сам апгрейд не думаю что будет проблемным, но пока я каждый запрос не проверю на 8-е мне никто не даст обновить, проект слишком нагрузоный чтоб рисковать)
источник

В

Вячеслав in ru_mysql
Narek Markosyan
подводные камни были?
Обязательно!
источник

В

Вячеслав in ru_mysql
На соседний хост поставь, залей дамп, переключи и проверь, если нет — переключи обратно 💁‍♂️
источник

NM

Narek Markosyan in ru_mysql
а есть какой-нибудь список что попадалось неожиданного? или на память самые яркие
источник

В

Вячеслав in ru_mysql
Вячеслав
Поправьте, если я не прав...


Можно конвертонуть все в универсальную кодировку:

#!/bin/bash

ipAddress="192.168.0.42";

mysqlPort="3306";

MSQL="mysql --defaults-file=/root/.secrets/mysql/root -h${ipAddress} -P${mysqlPort}";

for database_name in $(${MSQL} -BNe "SHOW DATABASES;" | grep -v -E '(^information_schema$|^performance_schema$|^mysql$|^sys$)'); do

 ${MSQL} -e "ALTER DATABASE ${database_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;";

 for table_name in $(${MSQL} -BNe "SHOW TABLES IN ${database_name};"); do

   ${MSQL} -e "ALTER TABLE ${database_name}.${table_name} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;";

 done;

done;


А потом добавить вот такой конфиг файлик:

echo "\

#[client]
#default-character-set = utf8

#[mysql]
#default-character-set = utf8

[mysqld]
character-set-server = utf8
#collation-server = utf8_general_ci
collation-server = utf8_unicode_ci
" > /etc/mysql/mysql.conf.d/charset-utf8.cnf
В логах была ошибка, т.к. PHP старой версии: Server sent charset unknown to the client но решение я уже написал 👆

И еще что то...
источник

В

Вячеслав in ru_mysql
Narek Markosyan
а есть какой-нибудь список что попадалось неожиданного? или на память самые яркие
Этот список вряд-ли универсальный:

Практический опыт обновления MySQL 5.7 до версии 8.0 _ Хабр
https://habr.com/ru/post/476852/

Обновление MySQL (Percona Server) с 5.7 до 8.0 _ Блог компании Флант _ Хабр
https://habr.com/ru/company/flant/blog/500706/
источник

NM

Narek Markosyan in ru_mysql
спасибо! изучу обязательно
источник
2020 June 29

FL

First Last in ru_mysql
Всем привет. Есть 3 таблицы:
1) User: id, name
2) Message: id, text, date
3) UsersMessages: id, user_id, message_id
Подскажите пожалуйста:
1) Как сделать селект всех User с его последним по date  Message?
1) Как сделать селект одного  User по id с его последними 5 по date  Message?
источник

МА

Мағжан Амангелдіұлы... in ru_mysql
select u.name, max(message_id) from UsersMessages um JOIN User u ON um.user_id = u.id group by um.user_id;
источник

МА

Мағжан Амангелдіұлы... in ru_mysql
типа так
источник