Задать вопрос
  • Как импортировать XML dump в MySQL через консоль?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Нафига было делать XML экспорт? Судя по тегам - читать это может только сам phpmyadmin. Поставьте на виртуалку lamp, импортируйте этот дамп, экспортируйте в нормальный sql - импортируйте на целевой машине нормальным способом.
    Или поставьте на виртуалку lamp, настройте проброс портов до целевой машины (например, силами SSH) и импортируйте через phpmyadmin.
    Ответ написан
  • Как остановить count (sql запрос) после того как найдет 1 запись?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Вам нужно узнать, есть ли такая запись? Зачем тогда count?
    SELECT id FROM users where login="bek" limit 1
    Вернулась строка - значит есть. Вернулось 0 строки - значит нет.

    Можно всегда возвращать одну строку:
    SELECT EXISTS(SELECT 1 FROM users where login="bek" limit 1)
    Ответ написан
    2 комментария
  • Почему нету нотиса?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если ваш класс (либо его предки) не реализует __set, то возможно добавить любые новые свойства в рантайме - добавлены они будет как public.

    Объявление свойства в описании класса на самом деле не требуется языком, но требуется другими разработчиками. И это не просто хороший тон, а именно "так и должно быть".
    И как дополнительная плюшка, если все свойства объекта объявлены в описании класса, объекты этого класса будут использовать более эффективное распределение памяти. При попытке создать новое свойство - будет прозрачно смигрировано в более толстую структуру.
    Ответ написан
    1 комментарий
  • Как решить проблему imagecreatefromjpeg?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Получайте бинарник нормальным curl'ом с необходимым таймаутом операции. Затем скармливайте imagecreatefromstring.
    Ответ написан
    Комментировать
  • Как подключить кнопки к материнской плате?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Не те страницы смотрите. Вам нужна колодка JFP1.
    https://ru.msi.com/Motherboard/support/Z170A-G43-P... На 6 странице английского мануала.
    Ответ написан
    Комментировать
  • Как оптимизировать данный SQL код?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    DATE(orders.created_at) >= :start

    Никогда не использовать условия такого плана. Это прямой запрет использования индекса по created_at, довольно вероятно селективного для этих запросов.

    SELECT orders.delivery, SUM(orders.delivery) AS summ
              FROM orders
              JOIN baskets ON  orders.basket_id=baskets.id
              WHERE baskets.purchase_status = 3 AND orders.deleted_at IS NULL 
                  AND orders.created_at >= :start AND orders.created_at <= (:finish + interval 1 day)
              GROUP BY orders.delivery

    И разобрать несколько строк ответа на приложении.

    SELECT SUM(if(orders.delivery = "kazpost", orders.delivery,0)) AS kazpost,
    SUM(if(orders.delivery = "courier", orders.delivery,0)) AS courier,
    SUM(if(orders.delivery = "pickup", orders.delivery,0)) AS pickup
              FROM orders
              JOIN baskets ON  orders.basket_id=baskets.id
              WHERE baskets.purchase_status = 3 AND orders.deleted_at IS NULL 
                  AND orders.created_at >= :start AND orders.created_at <= (:finish + interval 1 day)

    В одну строку.

    Затем смотреть explain
    Ответ написан
  • Не срабатывает preg_match_all?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    '#.*'.$value.'.*#is'

    Кстати $value у меня образуется следующим способом - $value = 'выбор?.*'.

    А почему должно найтись что-то ещё? Вы захватили всё от начала и до конца строки.
    Это-то единственное совпадение регулярка уступила и то не по своей воле, а ради хоть одного совпадения всего выражения.
    Ответ написан
  • Есть ли аналоги функции to_char в PostgreSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    lpad?
    Не очень понятно, что именно функция делает.
    В любом случае, можно написать свою реализацию.
    Ответ написан
    Комментировать
  • Разбить обычный HDD диск: 1 блин = 1 раздел. Реально?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    1) нет, нереально. LBA является абстракцией и адресуется по усмотрению прошивки диска.
    2) прошивка может по собственному усмотрению в любое время перемещать трансляцию внешних LBA в любое место всего ей доступного массива памяти (именно доступного прошивке, что всегда больше доступного пользователю объёма).

    Если вы ограничены местом - есть игрушки подобного плана: https://www.startech.com/HDD/Adapters/Dual-mSATA-S... Пара mSATA с чипом рейд-контроллера в формате 2,5" диска.
    Для 3,5" наверняка и под пару 2,5" устройств есть подобные.
    Ответ написан
    1 комментарий
  • Как корректно сделать запрос с оператором IN в PGSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Покажите SQL, а не как вы его генерируете.
    Скорей всего IN ('123,321,456,654'), что, конечно, числом не является. Вопрос не имеет отношения к pg и имеет только к вашей библиотеки доступа, как подставить в in список значений.
    Ответ написан
    Комментировать
  • Запустить функции асинхронно с получением результата(php)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    curl_multi или какая-нибудь обёртка поверх - сам по себе не очень удобен.
    С soap сложнее. Можно поковырять nusoap реализацию, нельзя ли вытянуть curl_exec во внешний мир.

    Можно уйти в модные микросервисы: написать для каждого поставщика транзитный микросервис, который делает запрос к его апи, перекодирует в ваш внутренний формат. Мультикурлом запросить ваши микросервисы. Поставщик, соответственно, может давать любое синхронное апи, вы всё равно сможете всех опрашивать одновременно.

    Можно порыться и именно в многопоточный код, pecl pthreads даёт такую возможность в php.
    Ответ написан
    Комментировать
  • Как указать срок действия подтверждения регистрации?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Сутки так по-английски и пишутся:
    DELETE FROM Users WHERE regdate < (NOW() - interval 1 day) AND confirmed = 0;
    Ответ написан
    2 комментария
  • Есть ли жизнь после centos или только генту?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Debian - это не про последние версии. Есть теперь уже официальные репозитории backports:, но и те отстают (или просто никто не портировал пакет) https://backports.debian.org/ Сюда приходят версии поновее, wine 1.8.2 в jessie вполне себе есть.
    Стабильный дебиан означает заморозку версий. Т.е. поставил и с приличной вероятностью ближайший апдейт не принесёт головной боли. Любимый DE останется тем же самым любимым DE, а не непойми чем и т.д.

    melkij@melkij:~$ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Debian
    Description:	Debian GNU/Linux 8.5 (jessie)
    Release:	8.5
    Codename:	jessie
    melkij@melkij:~$ dpkg -l | grep systemd
    ii  libsystemd0:amd64                     215-17+deb8u4                        amd64        systemd utility library
    ii  libsystemd0:i386                      215-17+deb8u4                        i386         systemd utility library
    melkij@melkij:~$

    Ну, в wheezy тоже всякое невыпиливаемое libpulse0 болталось. Как я такое получил:
    Пришлось взять пару пакетов из репозитория форка дебиана - devuan
    deb http://packages.devuan.org/devuan/ jessie main
    И чуток /etc/apt/preferences.d/ чтобы ставилось только то что нужно и не ставилось то что не нужно
    Package: systemd systemd:amd64 systemd:i386
    Pin: origin
    Pin-Priority: -1
    
    Package: *
    Pin: origin packages.devuan.org
    Pin-Priority: 50
    
    Package: libpolkit-agent-1-0 libpolkit-backend-1-0 libpolkit-gobject-1-0 policykit-1
    Pin: origin packages.devuan.org
    Pin-Priority: 700
    
    Package: udisks2 libudisks2-0 cgmanager libcgmanager0
    Pin: origin packages.devuan.org
    Pin-Priority: 700


    По идее, это будет работать и на тестовой версии дебиана - вот там уже пакеты посвежее. Но возможно там поттеринг прибит гвоздями ещё капитальнее.
    И ещё момент, вы говорите о gnome-terminal. Значит, вы пользуетесь gnome3? На сколько я знаю, актуальных версий уже прибито к поттерингу намертво и не спасут даже source-based дистрибьютивы.

    Если нужны свежие десктопные версии - то я бы попробовал arch.
    Ответ написан
    1 комментарий
  • Как составить запрос на выборку в Mysql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    mysql... Опять же нет никаких средств сгенерировать табличное представление из внешних данных, кроме:
    Сделать временную таблицу
    create temporary table external_geo_ids (ext_id int(11) not null);
    insert into external_geo_ids values (1),(2),(-1);
    select /**/ 
    from external_geo_ids 
    left join geo_regions_yandex on GeoRegionId=ext_id;

    Более многословно, но должно получиться быстрее на количестве проверяемых регионов больше нескольких штук.

    Или на лету джойнить подзапрос с бесконечными union all
    select /**/ 
    from (
        select 1 as ext_id
        union all
        select 2
        union all
        select -1
    ) external_geo_ids 
    left join geo_regions_yandex on GeoRegionId=ext_id;
    Ответ написан
    Комментировать
  • Возможно ли отсортировать недвижимость где владелец был один и тот же больше трёх лет подряд?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    У mysql с такими запросами печально. Ни оконных функций, ни ещё чего-нибудь полезного.

    В порядке утреннего бреда решение в лоб:
    select property_reg_num, property_owner_name_id from
        tablename y1
        join tablename y2 using(property_reg_num, property_owner_name_id)
        join tablename y3 using(property_reg_num, property_owner_name_id)
    where y2.property_record_on_year = y1.property_record_on_year + 1
    and y3.property_record_on_year = y2.property_record_on_year + 1

    С уникальным ограничением по property_reg_num & property_owner_name_id & property_record_on_year результат должен быть правильным.
    Ответ написан
    Комментировать
  • Почему у меня выводятся ???? мнесто кракозябр?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    set names - решение неверное, что даже заслужило отдельной страницы в мануале: php.net/manual/en/mysqlinfo.concepts.charset.php

    Решение правильное:
    $mysqli->set_charset('utf8');
    Ответ написан
    Комментировать
  • Как выбрать записи, которые созданы за какую то дату, если дата создания храниться в timestamp?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Выборка промежутка будет работать по индексу по этому полю, который зачастую уже есть и всё равно нужен для других запросов.

    Другие варианты возможны - явное приведение к дате ::date, штатные функции обработки датывремени date_trunc, date и любая stable хранимка. И эти способы тоже могут работать по индексу, но специально созданному функциональному индексу именно для этого выражения.
    Ответ написан
  • Include class наследование, в чем проблема?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Потому что сначала сущность объявляйте, а потом используйте. Не наоборот.
    И вообще PSR-1, #2.3
    https://github.com/php-fig/fig-standards/blob/mast...
    A file SHOULD declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it SHOULD execute logic with side effects, but SHOULD NOT do both.
    Ответ написан
    1 комментарий
  • Как попасть в среду postgres на debian?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Рутовый доступ к базе предоставляется для пользователя postgres (системный, без пароля, авторизоваться можно через sudo):
    sudo -u postgres psql
    Ответ написан
    1 комментарий
  • На какой козе подъехать к Президентской библиотке?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Смириться и не искать приключений - поставить на виртуалку какую-нибудь винду с сервелатом.

    Поискать приключений:
    заменить user-agent браузера на тот, что передаёт iPad. Дальше по обстоятельствам.

    Поискать много приключений:
    Зарыться во фронтенд, представляя серверную часть чёрным ящиком и отреверсить механизм получения интересующих данных.
    Ответ написан
    1 комментарий