Задать вопрос
  • Почему этот запрос выводит из строя mysql?

    @Akina
    А где DDL таблицы?

    И ещё - после запуска на выполнение "долгого" запроса как выглядят расход памяти и активность диска? Не начинается ли материализация подзапроса, особенно с утыканием в недостаток дискового пространства?

    И как себя поведёт
    WITH cte AS (
        SELECT id, time, ROW_NUMBER() OVER (PARTITION BY phone ORDER BY time DESC) AS n 
        FROM sms 
        WHERE time > NOW() - INTERVAL 6 MONTH AND time < NOW() - INTERVAL 6 HOUR
        )
    SELECT * 
    FROM  cte 
    WHERE n=4;

    ?
    Написано
  • Почему этот запрос выводит из строя mysql?

    @Akina
    Планы всех запросов и DDL таблицы в студию. А также планы запросов, где подзапрос преобразован в CTE. И точно версию MySQL.
    Написано
  • Как искать роутеры, которые сотрудники приносят на работу?

    @Akina
    Ой, вот ведь проблема - поймать момент, когда на одном клиентском порте нарисовалось более одного МАС-адреса... Ещё лучше - перейти на белый список, или вообще на МАС-based VLAN.
    Хуже, если к розетке подключится WAN роутера. Тогда МАС на порте будет только один, и тут уже надо анализировать сессии. Впрочем, пограничное оборудование должно ловить такие ненормальности без особых проблем.
    Что до WiFi - ну не вижу проблемы тупо пройтись со смартфоном по зданию, мониторя WiFi сети, их имена и расстояние до них.

    Да, это будет ПОСТОЯННЫЙ мониторинг. Но ведь так и надо...
    Написано
  • Перенаправить трафик с роутера через комп?

    @Akina
    Ну тут разве что локальный прокси на комп и всю маршрутизацию завернуть через него... и приложение прокси "ускорить батником".

    Хотя всё это вот - с ускоряющим батником,- звучит странновато.
    Написано
  • Почему Veeam B & R community edition отказывается восстанавливать БД из бекапа?

    @Akina
    Странно. У меня тот же билд Veeam. Установлен в виртуалке на 2012 Std сервере на хосте с 2019 Core. Бэкапит виртуалку с MS SQL 2012 на 2012 Std сервере на другом хосте с 2016 Std сервером, бэкапы кладутся непосредственно на тома первого хоста. Пришлось восстанавливать где-то с полгода назад, никаких проблем не встретил.

    Ну восстановите всю виртуалку, а потом Detach в копии и Attach по месту.
    Написано
  • Что режет скорость smb на удаленной шаре до 355КБ/c?

    @Akina
    Любая другая сетевая скорость не режется. Скачивание из интернета, скачивание файла по физической локалке, выгрузка, всё это работает на нативной скорости. Проблема только с шарой.

    Непонятно... вот всё это через совершенно тот же L2TP, и через тот же узел (инет) либо непосредственно с него?
    Написано
  • Почему один из компьютеров не пингует другой?

    @Akina
    Есть 2 ПК подключенных к 2 роутерам, каждый к своему. Роутеры соединены между собой.

    Нарисуйте схему - все устройства, все их интерфейсы и соединения, настройки каждого устройства и настройки каждого интерфейса (маршрутизация, NAT и т.п.). Так станет понятнее, где и что должно быть.
    Написано
  • Как в mysql сделать regexp_replace?

    @Akina
    Vitsliputsli, ну закиньте на багтрак...
    Написано
  • Как в mysql сделать regexp_replace?

    @Akina
    Vitsliputsli, Начало и конец строки - это не подстроки, а маркеры. Неудивительно, что LIKE их находит. Для любого пустого объекта BOF=EOF. Но вот заменять можно только подобъект, возможно, привязанный к маркеру, но никак не сам маркер.
    Написано
  • Объединение множества подсетей в одну сеть?

    @Akina
    Коммуникационное оборудование, надеюсь, управляемое? Тогда раскидать всё - компы+серверы, телефония, видеонаблюдение, админка,- по отдельным виланам.
    Написано
  • Как в mysql сделать regexp_replace?

    @Akina
    Мне сдается в mysql виноват 4 параметр pos, он как бы указывает заменять с первого символа, а строка пустая.

    Нет. Просто у пустой строки нет ни начала, ни конца - с точки зрения MySQL.

    https://dbfiddle.uk/UBlE6VhT
    Написано
  • Как вставить дату ячейку с помощью ПСТР()?

    @Akina
    Ячейка В - это дата, но когда получаю результат в ячейке, то туда вставляется число, а не дата.

    Не-а. В ячейке - число. Которое при выводе ФОРМАТИРУЕТСЯ как дата.

    Так что и в формуле форматируйте: ТЕКСТ(A1;"ДД.ММ.ГГГГ")
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Vitsliputsli,
    Если мы не подразумеваем получение рутового доступа взломщиком, зачем вообще шифрование?

    Я понятия не имею, это к автору вопрос. Да и, признаться, лень мне за кого-то думать. Ну вот придумал он так - пусть его. Потом переделает, если что...
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Vitsliputsli,
    Если пользователь это машина деплоя, которая накатывает миграции, то нужно

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

    Да, стандартная защита для ключа, это спасет если ключ дискредитирован. Но так как он по прежнему присутствует гдето в БД, то дискредитация СУБД приводит к доступу ко всем данным системы.
    Т.е. привилегированный доступ к любой из 2х машин (СУБД или к клиенту) даст доступ ко всем данным, в отличие от системы где шифрование в сервисе клиенте СУБД, там доступ к СУБД ничего не даст.
    Я просто не вижу ситуации когда следует предпочесть эту схему вместо схемы с шифрованием вне СУБД.

    Ключ, даже дискредитированный, нигде в БД не присутствует. А доступ к данным системы при дискредитации ключа возможен только в рамках прав, которые предоставляются по этому ключу. А раз это пользовательский ключ, то права эти явно не должны быть достаточны для получения доступа ко всем данным. тем более для выгрузки в пакетном режиме...

    А так-то обсуждать-то можно любые ситуации, вплоть до получения полного физического доступа.
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Stalk007, не, положить в NEW сразу всю запись - не получится. Придётся получить массив ключей из полученного JSON, потом для каждого отдельного ключа в цикле формировать соответствующую строку SET-запроса и получать/модифицировать одно поле в NEW динамическим SQL.

    Пробывал jsonb_to_record но new после нее остается пустым

    Не надо голых слов, выкладывайте ссылку на соотв. fiddle с неудачной попыткой.
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Vitsliputsli,
    В текущей схеме, деплой машина (вернее ее роль) не сможет записать такой триггер (вернее ее процедуру), т.е. создание всех таких секретных объектов будет осуществляться суперпользователем вручную? Или нет?

    Всё верно. Пользователю не предоставляется право создания функций и просмотра из кода - да вообще пользователю право на DDL незачем. Код функции создаётся от имени супера или иного привилегированного пользователя, при необходимости даже с опцией SECURITY DEFINER, что может обеспечить коду функции доступ к данным, которые напрямую недоступны пользователю (например, запись в таблицу аудита или доступ к персональным данным).

    но все это надо ведь както расшифровывать. Значит клиент будет запрашивать расшифровку и передавать ключ? А если клиент знает ключ, значит то, что мы усиленно оберегали выше бессмысленно и ключ все равно будет лежать гдето на 3ей машине. А раз так, то шифрование на клиенте БД выгоднее, т.к. даже дискредитация данных суперпользователя БД не даст доступа к данным, нет проблем с деплоем любых изменений и шифрование будет проходить в приложении, которое скорее всего проще масштабировать.

    Это не так. Даже если присутствует ключ шифрования и расшифровки, доступный пользователю, всё равно существует компонента, неизвестная и недоступная пользователю и хранимая на сервере, которая используется в процессе шифрования/дешифровки данных (модификация переданного ключа, соль и пр.). Соответственно даже знание пароля и получение зашифрованных данных - недостаточны для дешифрования.
    Написано
  • Как циклически пройтись по всем столбцам NEW?

    @Akina
    Vitsliputsli, чтобы получить код триггера, надо немножко больше прав, чем доступ к данным.
    Написано
  • Устанавливать ли в php таймзону пользователя?

    @Akina
    Михаил,
    А DEFAULT UTC_TIMESTAMP не работает.

    Да всё прекрасно работает! Просто надо помнить, что CURRENT_TIMESTAMP - это алиас функции NOW(), и соответственно обрабатываемый, тогда как алиаса UTC_TIMESTAMP не существует, а существует функция UTC_TIMESTAMP(), которую следует использовать правильным образом (поищите в RM, там синтаксис выражений в значении по умолчанию описывается явно и подробно).

    CREATE TABLE test (
      id INT,
      dt DATETIME DEFAULT CURRENT_TIMESTAMP,
      udt DATETIME DEFAULT (UTC_TIMESTAMP())
    );
    SET SESSION time_zone = '+00:00';
    INSERT INTO test (id) VALUES (1);
    SET SESSION time_zone = '+06:00';
    INSERT INTO test (id) VALUES (2);
    SELECT * FROM test;

    id	dt			udt
    1	2025-02-03 08:23:55	2025-02-03 08:23:55
    2	2025-02-03 14:23:55	2025-02-03 08:23:55

    https://dbfiddle.uk/CQpSURRT
    Написано
  • Устанавливать ли в php таймзону пользователя?

    @Akina
    Михаил, а зачем весь сервер-то перестраивать? когда достаточно простого
    set session time_zone = '+00:00';
    Написано
  • Устанавливать ли в php таймзону пользователя?

    @Akina
    szQocks,
    а неделя же это просто 7 * 24 * 60 * 60 * 1000

    Понятно, что я говорю не о тривиальных случаях... скажем, нужно среднесуточное значение, и считать за полнедели в конце месяца отдельно и вторую половину этой недели в начале следующего месяца тоже отдельно? Уже всё не так шоколадно.
    Написано