@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.