Задать вопрос
  • Как запретить создание файла БД при открытии через PHP PDO?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Конструктор почти сразу вызывает sqlite_open, в описании которого говорится:
    The database is opened for reading and writing, and is created if it does not already exist. This is the behavior that is always used for sqlite3_open()


    То есть нет, штатного способа нет, похоже на уровне самой библиотеки. Или по крайней мере того способа, как она используется из PDO.
    Ответ написан
    Комментировать
  • Как очистить столбец таблицы postgresql?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Как вы себе это представляете? truncate выкидывает файлы и выделяет пустые. А для колонки? Это не колоночная СУБД.

    Можно сделать так:
    begin;
    alter table tablename drop column foo;
    alter table tablename add column foo ...
    commit;

    Можно создать таблицу через create table as select и потом подменить старую новой.
    Ответ написан
    Комментировать
  • Материнская плата работает только если замкнуть провод?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Если в вашем блоке питания зелёным проводом обозначен 16 пин в 24-контактном разъёме питания (Power on), а чёрными - GND проводники - то именно так материнская плата и должна посылать сигнал для включения питания. Отдельно уточняю именно распиновку, т.к. цвета кабелей не стандартизированы, хоть в основном и используются похожие расцветки.

    Соответственно у вас неисправна кнопка включения питания либо соответствующие цепи материнской платы. Стоит проверить кратким замыканием контактов power switch на материнской плате.
    Плюс имеет смысл проверить напряжение на Power good сигнале (8 пин).
    Ответ написан
    2 комментария
  • Почему данные с checkbox-а не сохраняются в базе?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    TLDR
    input без name браузером не передаётся как элемент формы. Потому что у него нет name.
    Ответ написан
    Комментировать
  • Как по очереди вытащить диски из mdadm RAID1 и вернуть обратно без потери данных выключения питания?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Поднять где-нибудь рядом реплику. Потому что операции на дисках - это всегда опасно.

    проверяете по dmesg что аномалий нет.
    mdadm /dev/md1 -f /dev/sda
    mdadm /dev/md1 -r /dev/sda
    echo 1 > /sys/block/sda/device/delete
    проверяете dmesg
    отключаете диск физически. Если перепутаете - будет очень плохо.
    втыкаете куда надо, проверяете по dmesg что система его нормально увидела
    mdadm /dev/md1 -a /dev/sda
    ждёте по /proc/mdstat синхронизацию. Затем повторяете со вторым диском.
    Ответ написан
    Комментировать
  • Будет ли работать curl 7.34 на php5.3?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    В php есть только те функции, которые специально были экспортированы из C кода. Вот здесь: https://github.com/php/php-src/tree/PHP-5.3/ext/curl

    Соберётся ли php5.3 (в зависимости от минорного релиза датируемый 2009-06-30 - 2014-08-14) с curl 7.34 (2013-12-17 дата релиза) - попробуйте. 5.3.29 по идее должен собраться.
    Ответ написан
    Комментировать
  • Как настроить полный доступ между сетями на mikrotik?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Откуда роутеру знать о существовании сети 192.168.3.0/24? Пропишите статический маршрут, например.
    Или вместо соединения этих двух сетевых железок через 192.168.1.0/24 сделайте vlan'ы на обе сети.
    Ответ написан
    Комментировать
  • API Яндекс Маркет. Откуда брать id?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Из поиска магазинов, очевидно.
    https://tech.yandex.ru/market/content-data/doc/dg-...
    Ответ написан
  • Почему PHP7 работает медленнее?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Казалось бы, ответ очевиден

    Нет, не очевиден. См. близкие Single Thread попугаи.
    У E3-1225 v5 чуть меньшие частоты, но архитектура новее на 3 года. С классическими 5% в год от интела всё равно разница есть.
    Плюс скорей всего здесь больше влияния имеет латентность памяти.
    Ответ написан
    Комментировать
  • Как правильно подключиться к базе данных MySql с помощью Java (JDBC)?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Client does not support authentication protocol requested by server; consider upgrading MySQL client

    Что-то непонятно в сообщении? Обновите клиентскую библиотеку.

    Если речь о mysql 8.0 - то вторая возможность поменять default-authentication-plugin, который был в 8.0 изменён.
    Ответ написан
    Комментировать
  • Как уменьшить трату ресурсов на аутентификацию?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Переписать в один запрос. Ну или в два, смотря как роли вытаскивать.
    Затем поставить memcache или redis и по ключу "токен клиента" писать готовую структуру пользователя и его прав, соответственно добавить инвалидацию при изменениях в базе. Запросы с несуществующими токенами можно тоже кешировать с указанием разумного TTL и переписывать при генерации нового токена.
    Ответ написан
    Комментировать
  • Индекс нужно создавать на внешний ключ или на поле в родительской таблице, на которое ссылается внешний ключ?

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

    innodb требует, чтобы индекс на referenced (на которую ссылаемся) табличке уже был. Индекс на табличке которой alter table делаем будет неявно создан если отсутствовал. Таким образом innodb требует наличие индексов на обоих концах FK.
    Ответ написан
    Комментировать
  • PDO добавление записи в БД. Что делать?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Call to a member function prepare() on null

    Почему вы вызываете метод класса подсовывая null вместо объекта?
    А почему там может быть null? Например потому, что вы нигде не инициализируете $this->pdo, к тому же у вас выключены E_NOTICE в error_reporting, чем вы запретили интерпретатору показать подсказку..

    Ну и пример использования вашего класса не подходит к фактическому поведению класса.
    Ответ написан
    Комментировать
  • Как исправить кривое отображение столбцов в Postrgresql?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    У вас просто терминал узкий для вашей выборки.
    Широкие результаты часто удобнее читать в широком виде, который переключается с помощью команды \x в psql:

    melkij=> select generate_series(1,3);
     generate_series 
    -----------------
                   1
                   2
                   3
    (3 строки)
    
    melkij=> \x
    Расширенный вывод включён.
    melkij=> select generate_series(1,3);
    -[ RECORD 1 ]---+--
    generate_series | 1
    -[ RECORD 2 ]---+--
    generate_series | 2
    -[ RECORD 3 ]---+--
    generate_series | 3
    Ответ написан
    1 комментарий
  • Как войти по ssh на сервер без пароля, используя ключ?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    man ssh
    ssh ... -i /path/to/private_key
    Ответ написан
    Комментировать
  • Как поменять тип поля с integer в datetime с автоматической конвертацией значений?

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

    Для конвертации из числового unixtime в datetime есть подходящая функция FROM_UNIXTIME, поэтому обновление таблицы будет таким:
    update tablename set new_datefield = FROM_UNIXTIME(old_int_unixtime);
    Ответ написан
    Комментировать
  • Как делать бэкапы/дампы в Postgresql? Какое есть бесплатное и простое решение, которым пользуются многие?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Зависит от требований к бекапам.
    Если нужен point in time recovery, т.е. возможность восстановить состояние кластера на какую-то произвольную транзакцию - то это pg_basebackup + архив WAL.
    Чтобы не собирать конструктор вручную - есть barman. Если бекапить хотите куда-то в s3 - то проще будут wal-e или wal-g
    Одну базу в отдельности так бекапить и восстанавливать не выйдет, только весь инстанс целиком. Объём бекапа = объём всего инстанса + объём всех WAL от начала basebackup до нужного момента восстановления, количество wal зависит от вашей пишущей нагрузки.

    Если достаточно логических слепков данных, например, ежесуточных - тогда да, pg_dump. Восстановление соответственно только на момент начала снятия дампа.
    Типично делается pg_dumpall -g для сохранения глобальных данных кластера - пользователей, tablespace, имён баз и отдельные pg_dump для тех баз которые надо бекапить.
    Формат часто custom делается, т.к. он штатно сжимается и позволяет через pg_restore восстанавливать определённые объекты из дампа, а не только всё целиком как текст через psql. Для гигабайтной базы смысла нет, а для баз побольше имеет смысл делать формат directory в несколько потоков.
    Ответ написан
    4 комментария
  • В чём отличие обычной и расширенной установки Debian?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Разница в количестве вопросов. Вернее в приоритете этих вопросов. How the Installer Works, только параметром priority отличается эти пункты меню.
    Ответ написан
  • SEAGATE ST4000DM004 или Western Digital WD40EZRZ?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Расходник или расходник? Какой априори ненадёжный расходник выбрать?
    Да без разницы. Подкиньте монетку. Любой HDD - расходник, лишь по чистой случайности прикидывающийся рабочим и способный некоторое время читать то что на него записали.

    Если хотите бесполезных циферок - посмотрите отчёты тех же backblaze, но ни первой ни второй модели у них не представлено.
    Ответ написан
    Комментировать
  • Автоматическая запись в две базы Postgresql?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Для цели резервного копирования вам нужна не вторая база, а само резервное копирование. То есть pg_basebackup и архив WAL с момента старта basebackup до момента на который вы хотите восстановить состояние базы. Посмотрите barman как более готовую штуку для этого. Или wal-e/wal-g, которые проще в настройке сами по себе - если вы бекапитесь куда-нибудь в совместимое с ними место.

    Если вам нужно не резервное копирование, а запасная машинка на случай проблем с первой - то вам нужна репликация. Штатная потоковая репликация отличная стабильная штука. Надо пояснять чем отличается резервирование от бекапов?

    Писать кодом в две разные базы - как раз идея плохая как для резервирования, так и для бекапов. Записали изменение в одну базу, во вторую не смогли с какой-нибудь мелкой ошибкой вроде сети моргнувшей. Что делать будете? А ничего хорошего. Корректно писать в несколько мест - задача не слишком тривиальная и нужно что-то сочинять, например протокол двухфазного коммита.
    Ответ написан