Архив

Публикации с меткой ‘mysql’
7 августа 2020 Нет комментариев

Например, для всех таблиц MyISAM в БД:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'db_name' AND ENGINE = 'MyISAM';

затем с полученным списком:

ALTER TABLE `table_name` ENGINE=InnoDB;
Categories: MySQL Tags:

Конфигурация в /etc/my.cnf.d/server.cnf:

[mariadb]
slow_query_log
slow_query_log_file=/var/log/mariadb/mariadb-slow.log
long_query_time=1.0

Больше информации:
https://mariadb.com/kb/en/slow-query-log/
https://mariadb.com/kb/en/slow-query-log-overview/

Лог всех запросов: в ту же секцию добавить

general_log
general_log_file=/var/log/mariadb/mariadb-query.log
Categories: Unix Tags:
10 марта 2020 Нет комментариев

shell скрипт для автоматического изменения кодировки таблиц и столбцов с utf8 на utf8mb4

#!/bin/bash
 
# mycollate.sh <database> [<charset> <collation>]
# changes MySQL/MariaDB charset and collation for one database - all tables and
# all columns in all tables
 
DB="$1"
CHARSET="$2"
COLL="$3"
 
AUTH="-uuser -ppass"
 
[ -n "$DB" ] || exit 1
[ -n "$CHARSET" ] || CHARSET="utf8mb4"
[ -n "$COLL" ] || COLL="utf8mb4_general_ci"
 
echo $DB
echo "ALTER DATABASE \`$DB\` CHARACTER SET $CHARSET COLLATE $COLL;" | mysql $AUTH
 
echo "USE \`$DB\`; SHOW TABLES;" | mysql -s $AUTH | (
	while read TABLE; do
		echo $DB.$TABLE
		echo "ALTER TABLE \`$TABLE\` CONVERT TO CHARACTER SET $CHARSET COLLATE $COLL;" | mysql $AUTH $DB
	done
)

https://dba.stackexchange.com/questions/8239/how-to-easily-convert-utf8-tables-to-utf8mb4-in-mysql-5-5

Categories: Mac, Unix Tags: ,
8 февраля 2019 Нет комментариев

Когда текст обрезается после первого смайла (эмодзи).
Использовать кодировку utf8mb4_general_ci вместо utf8_general_ci

Categories: MySQL Tags:
27 февраля 2018 Нет комментариев

Найти в таблице catalog записи с повторяющимся uid.
Показать все:

SELECT * FROM `catalog` WHERE `uid` IN (SELECT `uid` FROM `catalog` GROUP BY `uid` HAVING COUNT(`uid`)>1) ORDER BY `uid` ASC, `id` DESC;

Показать только уникальные:

SELECT * FROM `catalog` WHERE `uid` IN (SELECT `uid` FROM `catalog` GROUP BY `uid` HAVING COUNT(`uid`)>1) GROUP BY `uid` ORDER BY `uid` ASC, `id` DESC;

Поиск по двум столбцам

Categories: MySQL Tags:
8 февраля 2018 Нет комментариев

Заменяем /temp/ на / в parent_chpu в таблице seo в строках, которые начинаются с /temp/

UPDATE `seo` SET `parent_chpu` = REPLACE(`parent_chpu`, '/temp/', '/') WHERE `parent_chpu` LIKE '/temp/%' OR `parent_chpu`='/temp/';

Заменяем 125/ на «ничего» в path в таблице mod_shop в строках, которые начинаются с 125/

UPDATE `mod_shop` SET `path` = REPLACE(`path`, '125/', '') WHERE `path` LIKE '125/%';
Categories: MySQL Tags:
8 февраля 2018 Нет комментариев

Добавляем в parent_chpu в таблице seo в начало каждой строки /

UPDATE `seo` SET `parent_chpu` = CONCAT('/', `parent_chpu`);
Categories: MySQL Tags: