PostgreeSQL: контроль уникальности вставки

Хороший вариант: возложить контроль уникальности вставляемых данных, на уровень БД. Если это по каким-то причинам не возможно, то можно попробовать такой вариант:

insert into users_groups_filling (user_id,user_group) 
select  :user_id,:user_group 
where 
 NOT EXISTS (
	 SELECT id from users_groups_filling where user_id=:user_id and user_group=:user_group
 )

SQL: выборка последних значений по дате из БД

Задача: в таблице хранятся тарифы «сплошным навалом», необходимо вытащить последние значения всех тарифов.

Решение:

select 
reg_tarifs.date as dttime,
reg_tarifs.tarif as tarif,
reg_tarifs.zone as zone_num,
enum_zones.name as tarzone
from reg_tarifs
inner join enum_zones on enum_zones.id=reg_tarifs.zone
inner join 
(select 
  max(date) as maxdt,zone 
from reg_tarifs
where ezs=5
group by  zone 
) as max
on max.maxdt=reg_tarifs.date and max.zone=reg_tarifs.zone

The server requested authentication method unknown to the client

Возникло при переходе с Mysql 5.7 на 8.0 со связкой php 7.2 Гугл говорит, что это потому что в 7.2 еще не завезли новую усиленную авторизацию в mysqli. Временное решение, пока нет возможности обновить до php 7.3 — сделать авторизацию «по старому» :




Восстановление только одной таблицы из бекапа MySQL

Довольно частая ситуация: есть бекап базы. Развертывать его целиком чтобы посмотреть данные одной таблицы? А если он большой это может занять продолжительное время. Есть вариант с использованием sed:

В результате выполнения будет сформирован файл содержащий только таблицу usbox_services. Ну а далее его уже заливаем стандартно..




MYSQL: <имя таблицы> is marked as crashed and should be repaired

В моем случае обошлось просто (Внимание! данные в таблице удаляются!):

Если данные важны для сохранения,восстановить можно попробовать так:




1 2 3 4 12