@RA

Тег mysql в блоге RA

RA

Раньше на ubuntu 16.04 можно было поставить mysql 5.6 заменой названия версии дистрибудитва и он с 15.10 норм ставился. Теперь что-то сломали в зависимостях и mysql 5.6 был снесён при очередном обновлении.

Пробовал 5.7. Но т.к. в 5.7 починили/поломали работу с geometry, то лопатить код под 5.7 не хочется.
Поставил mariadb 10.2. И вздохнул спокойно. Всё работает и geometry в том числе.

PS Про geometry. Есть поля типа POINT, и в mysql 5.6 в эти поля можно было записать пустую строку. А 5.7 хочет видеть в этих полях только объект geometry. Вот такая обратная совместимость.

RA

К вопросу сколько символов выделять под фамилию

Пабло-Диего-Хосе-Франсиско-де-Паула-Хуан-Непомусено-Мария-де-лос-Ремедиос-Киприано-де-ла-Сантисима-Тринидад-Мартир-Патрисио-Клито-Руиз-и-Пикассо

RA

Например мы храним данные в mysql и используем elastic для поиска.
Как обеспечить целосность связки mysql->elastic?

Есть 2 варианта
1. Записывать в элестик изменения сразу же как только что-то изменилось в БД.
"+" - в эластике всегда актуальные данные
"-" - если что-то пошло не так (откат транзакции mysql или отвалился elastic), то целосность данных нарушается

  1. Время от времени записывать в эластик изменённые данные.
    "+" - если что-то заглючит, то изменения будут внесены позже
    "-" - нельзя полагаться на актуальность данных из эластика

Или есть ещё варианты?

RA

Вот вы индексы к mysql таблице добавляете сразу при создании таблицы, или как-нибудь потом когда окажется что селекты тормозят?

RA

Ок, посоны, скажите и вы своё мнение.
Таблица items в mysql. Нам нужно добавить к модели список цветов. Поиска по цвету не будет.
Т.е. должно получиться так
item1 - красный, жёлтый, зелёный
item2 - жёлтый, синий

Варианты решения задачи
1) сделать ещё одну таблицу item_color и реализовать типичное отношение один ко многим;
2) добавить поле colors в таблицу items, где хранить цвета через запятую.

Ваше мнение.

RA

Нужно получить строки с lang='EN', только если не нашлась строка с lang='RU'

Есть такое решение
SELECT *
FROM table
WHERE lang IN ('EN', 'RU')
AND (lang='RU' OR NOT EXISTS(SELECT lang FROM table WHERE lang='RU'))

Но по-моему такой запрос просто обязан тормозить.
Борюсь с собой или прокостылять так всего в одном месте или дозаполнить ~20 таблиц недостающими значениями для всех языков.

RA

Из резюме


По-моему тут нет повода для гордости

RA

Postgres vs Mysql от Uber.
Постгрес архитектурно проиграет мускулю.

https://m.habrahabr.ru/comp...osadmin/blog/322624/

RA

in my.ini file

mysql<= 5.6.5 sql-mode=""
mysql<= 5.6.6 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
В итоге в 5.6.6 имеем проблему с дефолтными значениями. Решение - поставить sql-mode=""

RA

Ебатушки-ребятушки

MySQL's utf8 encoding is not actual UTF-8. It's an encoding that is kinda like UTF-8, but only supports a subset of what UTF-8 supports. utf8mb4 is actual UTF-8.

А чтобы перейти с utf8 на utf8mb4 надо сделать 6 шагов
https://mathiasbynens.be/no...8mb4#utf8-to-utf8mb4

Но и этого мало. utf8mb4 не умеет fulltext индексы. А значит придётся делать одно поле utf8, а второе utf8mb4.
И это всё надо чтобы хранить в базе смайлики. Скажите мне что я не прав и можно сделать иначе.

RA

Есть таблица 10Г. Хочу разбить её на PARTITION.
Mysql при выполнении этой операции залочит таблицу?

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.