Задать вопрос
  • Как обезопасить id SERIAL для корректной работы без промежутков значений?

    @Akina
    Boris007, это нормальное поведение в ЛЮБОЙ СУБД.

    Генератор автоинкремента гарантирует, что при полностью автономной работе (т.е. без вмешательства в его работу извне) очередное сгенерированное значение превышает любое ранее сгенерированное значение. К слову, именно следствием этой гарантии и является гарантия, что никакое значение не будет сгенерировано повторно.

    Всё. Более автоинкремент НИЧЕГО не обещает и не гарантирует. В том числе и непрерывности в списке генерируемых значений.

    В MySQL такого не было просто

    Ну либо ты не видел, либо не обратил внимания. Попробуй INSERT .. ODKU.
  • Как обезопасить id SERIAL для корректной работы без промежутков значений?

    @Akina
    большинство проблем с SQL, особенно у новичков, как раз из-за автоинкремента, вот как сейчас.

    Это - проблема не автоинкремента. Это безграмотность новичка, который пытается на одно поле навьючить две разные функции одновременно. Причём функции несовместны - и, ясен пень, ничего не получается.

    правильно спроектированная база в автоинкременте не нуждается.

    100%.
    До тех пор, пока речь не пойдёт о ресурсах и производительности - однозначно так.

    Еще более скажу - uuid совсем не зло

    А вот с точки зрения как раз потребления ресурсов и производительности - зло, да ещё какое... не, не само по себе, а по сравнению с автоинкрементом, конечно.

    У меня очень просто пример

    Бессмысленно. Всегда найдутся условия, в которых самый идиотский подход окажется оптимальным.
  • Где ошибка в запросе?

    @Akina
    Пётр,
    разве она не единожды выполняется?

    Вот сфига бы? нет, конечно.
  • Где ошибка в запросе?

    @Akina
    Потому что dbo.getRandIntUp(@mx_number) выполняется заново для каждой записи.
  • Как обезопасить id SERIAL для корректной работы без промежутков значений?

    @Akina
    Автоинкрементные ключи вообще лучше не использовать - это вселенское зло!
    ...
    Почему автоинкремент плохо - сотни статей в интернетах.

    Не надо повторять глупые фразы за безответственными людьми.
    В интернетовских статьях (в т.ч. и в статьях по ссылкам) все аргументы - или (1) вообще не по делу, или (2) откровенно за уши притянуты, или (3) пытаются перенести на автоинкремент вину за изначально неправильную архитектуру системы.
    Во всяком случае системно поддерживаемый автоинкремент куда как лучше какого-то своего самопального счётчика. А уж UUID - это и вовсе не альтернатива, ибо проигрывает автоинкременту по всем параметрам, кроме предсказуемости (а в этом случае - см. пункт 3).
  • Как редактировать данные на лету при импорте из файла?

    @Akina
    monday_suicide,
    В некоторых строках встречается символ, который является делимтром, из-за этого программа думает, что нет нужного столбца.

    Если разделитель полей в значении поля не экранирован, значит, CSV некорректен. И по-хорошему нужно корректировать то программное средство, которое выгружает данные.

    Всего три столбца.
    Делимитр |
    1 - timestamp
    2 - строка
    3 - json.
    в 1 столбце символа быть не может.
    в 2 - они встречается
    в 3 - тоже может встречаться, но тут можно сыграть на том, что строка всегда начианется и заканчитвается на {}

    В принципе согласен - разумнее обработать CSV, чем выкручиваться при импорте. Возможный вариант решения при импорте может быть такой: в запросе выполняем импорт всей строки данных в строковое поле, а в триггере BEFORE INSERT выполняем парсинг - откусываем в первое поле всё от начала до первого разделителя (его самого вообще удаляем), а в json-поле всё после первого разделителя и открывающей фигурной скобки (если строковое поле может содержать такой фрагмент - то от скобки, комплементарной закрывающей фигурной).
  • Перестал запускаться mysql, что делать?

    @Akina
    Добавьте сведения из Error Log самого MySQL...
  • Можно ли восстановлени резервной копии Windows server на другом железе?

    @Akina
    У него вендорское железо - там без драйверов даже накопителей скорее всего не будет видно, что уж о восстановлении загрузки говорить...
  • Как оптимальнее всего организовать хранение тяжёлых данных и чтобы потом максимально быстро доставать оттуда данные для отчётов?

    @Akina
    у нас есть тяжёлая таблица

    Что в данном конкретном случае "тяжёлая"? ну сомневаюсь я, что речь идёт о сотнях миллионов записей...

    Как оптимальнее всего организовать хранения таких данных и чтобы потом максимально быстро доставать оттуда данные для отчётов?

    Если это частая и критичная по времени задача, то есть смысл подумать о предрасчёте. Хотя данные выглядят нормализованными, и для озвученной задачи есть разве что смысл формировать для каждого юзера периоды непрерывного присутствия, а затем использовать их при первичном отборе юзеров, среди которых и будет выбираться "чемпион" на каждый день заданного периода. Но, как мне кажется, обычной индексации тут за глаза.
  • Можно ли восстановлени резервной копии Windows server на другом железе?

    @Akina
    Как правило, не поднимается. Если не озаботиться заранее установкой в ОС драйверов для того железа, на котором будете пытаться поднять сервер в случае выхода из строя железа нынешнего.
  • Как пробросить значение поля в CTE?

    @Akina
    Алексей Медведев,
    CAST(if(cs.parent_id IS NULL, '', cs.name) AS CHAR(65535)) fqpath

    Это чё за изврат-то? у тебя ж там явно написано:
    WHERE cs.parent_id IS NULL
    Значит, условие всегда TRUE, соответственно IF() явно лишний, и достаточно
    CAST(cs.name AS CHAR(65535)) fqpath
  • Как пробросить значение поля в CTE?

    @Akina
    Выложите в вопросе ссылку на fiddle с тест-данными, либо CREATE TABLE + INSERT INTO. И требуемый финальный результат для таких данных.

    3 уровня иерархии в структуре и десяток юзеров - достаточно, ну и названия не такие длинные...

    PS. А что условие WHERE cs.parent_id IS NULL закомментировано-то? Запрос вроде нормальный, только условие связывания в рекурсивной части наоборот должно быть - ты ж там идёшь вниз по дереву... ну и ещё не вижу финального джойна юзеров в полученную структуру.

    я буду получать только одного родителя.

    Эммм... так у тебя и есть не более одного непосредственного родителя на узел. А прямых получишь всех.
  • Как пробросить значение поля в CTE?

    @Akina
    Не страдайте фигнёй. Получите FQPath в рекурсивном CTE, а потом джойните с юзерами.
  • Как лучше хранить список телефонов в БД?

    @Akina
    Есть сущности User и Client

    ?? А в чём разница? и то, и другое - есть сущность Person. Только набор атрибутов различается...
  • Можно ли закрыть "общий доступ" через GPO?

    @Akina
    Вкладка вполне себе убирается через локальные политики. Так что и через групповые это возможно.
  • Где взять запросы для тестирования самописного SQL движка?

    @Akina
    Где можно скачать подобные скрипты для тестирования движка на основе баз Northwind, AdventureWorks?

    Очевидно, в документации - к практически любой статье идут примеры запросов и эталонные ответы.
  • Как реализовать поиск по нескольким полям?

    @Akina
    нужно найти по одному или нескольким введённым данным.

    Если введено два значения - искать на соответствие обоим или хотя бы одному из двух?

    Вообще - читать теорию по термину "фасетный поиск".
  • Server 2019 на стационарный пк. возможно ли это?

    @Akina
    здесь надо будет пылесосить каждый месяц

    Ну если лень переделать нормально - то да.

    А надо - перевернуть вентиляторы (блока питания и дополнительные), чтобы все они дули внутрь корпуса. В общем, вентиляторы должны создавать внутри подпор. Все отверстия этих вентиляторов снаружи закрываем хорошим фильтром ( подойдёт бумага от фильтра пылесоса, в крайнем случае - салфетки для рук, сухие, из нетканого материала, в 2 слоя). Всё, остаётся только раз в 1-2 месяцы снять пылесосом лохмы с поверхности фильтров. Внутри корпуса - идеально чисто.
  • Server 2019 на стационарный пк. возможно ли это?

    @Akina
    Дмитрий Трейсеров,
    но на виртуалку надо будет докупить еще одну оф винду 10 или 11.

    Это с какого такого большого перепугу-то? ESXi - самостоятельная считай ОС. Hyper-V 2019 - самостоятельный и совершенно бесплатный сервер. Или любой линух и в нём любой штатно поставляющийся VMM - тоже не за бабки.