@pgsql

Страница 68 из 1062
Phil
09.08.2016
21:38:09
Посоветуйте как въехать быстро в PostgreSQL тому, кто шарит в MySQL. Может видяшки какие вводные есть, которые показывают различие?
Просто так въезжать в Postgres не хочешь ты. Знать зачем ты хочешь. Знание это освободит тебя от видяшек

Посоветуйте как въехать быстро в PostgreSQL тому, кто шарит в MySQL. Может видяшки какие вводные есть, которые показывают различие?
Некоторых вещей в Postgres просто нет. И не будет скорее всего. Это верно и для обратной миграции - в MySQL некоторых вещей нет и не будет. Синтаксис разный. Поведение разное. Считай что новую базу осваиваешь. Рекомендкую прочесть раздел 17 официальной доки до того как начнешь вообще трогать. Там пахнет нафталином и многие вещи троганием вообще не достигаются

Макс
09.08.2016
21:43:04
Ну, концепции-то одинаковые, так или иначе. )

Понятно, что синтаксис немного отличается, есть какие-то свои фичи и все такое. Но с нуля мне это точно не нужно, вроде как. ) Но я нашел одну видяшку, которая вроде отвечает на мой вопрос, буду смотреть. Спасибо за отсылку на раздел доки, обязательно загляну в него :)

Google
Phil
09.08.2016
21:45:35
Понятно, что синтаксис немного отличается, есть какие-то свои фичи и все такое. Но с нуля мне это точно не нужно, вроде как. ) Но я нашел одну видяшку, которая вроде отвечает на мой вопрос, буду смотреть. Спасибо за отсылку на раздел доки, обязательно загляну в него :)
Собственно проблема, что концепция у них ваще разная. И синтаксис не немного, а ваще различается. И работает немного по другому. И паттерны настройки так прямо скажем ортогональные. Они вообще всё по разному делают

Макс
09.08.2016
21:49:32
Я о том, что это как ни крути, а все равно реляционная база данных. Синтаксис - это мелочи. А вот с архитектурой нужно разобраться

Pavel
09.08.2016
21:56:08
Да можешь впринципе прямо сюда вопросы задавать

Первое на что я например напоролся когда переходил с мискл - это то что таймстампы в постгре содержат десятитысячные доли секунды)

Чтобы было по нормальному, надо объявлять как timestamp(0)

Вот на таких мелочах спотыкаешься обычно

А то что все разное - это видимо мнение админа. Мне как разработчику показалось все весьма одинаковым.

Макс
09.08.2016
22:02:47
Вот на таких мелочах спотыкаешься обычно
Спасибо Павел. Я тоже скорее взгляд разработчика имею. Концепции-то все равно знакомые. Буду завтра усиленно углубляться в эту тему )

Phil
09.08.2016
22:06:29
А то что все разное - это видимо мнение админа. Мне как разработчику показалось все весьма одинаковым.
Хм, а другое экранирование, другая работа с кодировками (только сегодя мозг всем тут вынес же), другая реакция на селекты, другие констрейны, другие инсерты и апдейты (сходи, найди мне REPLACE), другие транзакции, другие вьюхи - это как бы не? Ты там key valuse что ли держишь? Зачем переходил-то? :)

И функции все другие - я с работой с датами чуть голову не сломал

И дататайпы вообще другие - начиная от таймстампа, заканчивая децималами и немного не такими чарами

Pavel
09.08.2016
22:08:22
Экранирование другое - это что-то из разряда сложнопреодолимых барьеров?

Google
Phil
09.08.2016
22:09:17
Да. Я например не везде готов взять и переписать все запросы. Более того, я опять забыл как там экраниуется, сходу даже не скажу и полезу опять искать где читал про это в следующий раз

Pavel
09.08.2016
22:10:19
Если не работаешь постоянно то это нормально, а если работаешь то полюбому через некоторое время само в голову влезет.

Я ничего не переписывал, начинал новые проектики делать. Работу с кодировками вообще перестал замечать, как и работу с датами

Phil
09.08.2016
22:12:28
Да я про работу с кодировками уже всё ппонял. Тут 99% участников даже не задумывались над этим никогда

Pavel
09.08.2016
22:13:06
Ну реально же не было необходимости, все само работает ;)

А то что там надо отсортировать - так это в крайнем случае выносится на програмный уровень, кмк

Phil
09.08.2016
22:16:28
А то что там надо отсортировать - так это в крайнем случае выносится на програмный уровень, кмк
Это ты SELECT ... ORDER BY ... LIMIT 0,10 на программный уровень выносить собрался?

Pavel
09.08.2016
22:17:13
Да, получаешь список данных и сортируешь как угодно для вывода пользователю

А, с лимитом конечно не прокатит ;)

https://www.postgresql.org/docs/9.5/static/collation.html а вот это все не подходит?

Phil
09.08.2016
22:23:02
google UCA

Pavel
09.08.2016
22:33:58
Что-то мне кажется что решение проблемы есть. Если чуть дольше поискать..

Phil
09.08.2016
22:35:11
искаропки нет. пока единственное что есть - модуль для 9.3 который надо вкомпилировать

Pavel
10.08.2016
17:01:05
Я тут подумал, может быть это и правильно что пг опирается на системную локаль? Все таки операционная среда - это то что должно предоставлять как можно больше средств для обработки информации

А то получается что пг отсортирует по своей локали, другие программы по каким-то своим. Бардак получается.

Аггей
10.08.2016
17:06:10
В документации сказано, что если локаль не соответствует набору хранимых символов, будут проблемы с сортировкой, индексами, функциями upper() и lower(). Буквально сегодня столкнулся с тем, что в кластере во всех параметрах lc_ указано US_en.UTF8, но ни одной из выше перечисленных проблем с кириллическими строками не воспроизводится

Что я делаю не так?

Pavel
10.08.2016
17:07:20
Там проблемы со смесью кириллических и национальных строк

(насколько я понял)

Google
Pavel
10.08.2016
17:08:21
угу. а притом что системные локали они разные у систем - получается полный ахтунг
А они разве разные? Может быть разный набор, но юникод символы то одни и те же

Alexey
10.08.2016
17:08:43
Символы — одни, наборы — нет.

Alexey
10.08.2016
17:11:35
Для сортировок-то не влияет? Ага, щас.

Phil
10.08.2016
17:11:59
А они разве разные? Может быть разный набор, но юникод символы то одни и те же
правила сортировок разные. у fbsd, osx и linux совсем разные

Для сортировок-то не влияет? Ага, щас.
но это не набор символов, а алгоритм сортировки

Pavel
10.08.2016
17:16:46
Very interesting

Phil
10.08.2016
17:18:11
ну это google libc UCA

google osX UCA locale

ну и так далее

даже гуглится что sort в linux и OSX по-разному отдаёт

эээээ

вот, в официальном PG нет локалей

Это про Docker

Алексей
10.08.2016
17:48:23
Фил, а как надо то ?

я не понимаю грубину проблемы

у меня плохо будут сортироваться данные при не правильной локали ?

Google
Алексей
10.08.2016
17:49:45
проблема только с сортировкой или еще всякими "a" in str

Макс
10.08.2016
17:55:01
давайте придумаем как локаль поменять )) У меня что-то не получается с налета

Phil
10.08.2016
17:56:34
у меня плохо будут сортироваться данные при не правильной локали ?
А я не уверен в поведении PG при заданной одной локали и отсутсвии оной в системе

Макс
10.08.2016
18:02:03
Для генерации локали можно использовать: dpkg-reconfigure locales Но там диалог, в котором нужно выбрать нужную локаль для генерации. Это не подходит для докера, естественно. Задать значение генерируемой локали нельзя, похоже (

Maxim
10.08.2016
18:03:05
locale-gen --lang ru

ixpict
10.08.2016
18:03:08
localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 ?

Макс
10.08.2016
18:05:35
locale-gen --lang ru
Отлично! Это оно, спасибо ) Осталось локаль установить

Maxim
10.08.2016
18:06:32
export LANG=ru_RU.UTF-8 ?

Макс
10.08.2016
18:07:41
export LANG=ru_RU.UTF-8 ?
Вау, тезка, все работает! Спасибо огромное!! ))

Maxim
10.08.2016
18:07:48
и я бы еще добавил export LC_MESSAGES=C хуже нету, чем когда сообщения об ошибках начинают не на аглицком валиться

особенно когда их нагуглить пытаешься ;)

Макс
10.08.2016
18:08:31
это точно

Запишу в Gist ))

Но вот затем PG валится... печально

LOG: invalid value for parameter "lc_messages": "en_US.utf8"

Maxim
10.08.2016
18:58:54
потому что должно быть "C"

Макс
10.08.2016
19:00:39
так оно же и есть C после export LC_MESSAGES=C

D
10.08.2016
19:03:15
en_US.UTF-8

Макс
10.08.2016
19:03:33
без смены локали все работает как раз

а, нет, этот момент пройден, просто команда одна не применилась... Но едем дальше ))

Google
Макс
10.08.2016
19:07:18
The files belonging to this database system will be owned by user "postgres". This user must also own the server process. initdb: invalid locale settings; check LANG and LC_* environment variables

Короче, разобрался. Нужно еще установить LC_CTYPE и LC_ALL. Если они пустые, то PG не запускается.

Maxim
10.08.2016
19:48:05
?

Аггей
10.08.2016
19:59:30
LC_ALL вроде не нужен

LC_Collate и lc_ctype

Макс
10.08.2016
20:02:37
да, если поставить LC_ALL, то там все параметры перезадаются

LC_ALL вроде не нужен
Чудеса какие-то, но реально если LC_ALL пустой, то PG падает

Может там еще какой-то скрытый параметр есть, который наследуется от LC_ALL?

Maxim
10.08.2016
20:23:11
ну выстави сначала LC_ALL, а потом перегрузи LC_MESSAGES

Макс
10.08.2016
20:34:30
ну выстави сначала LC_ALL, а потом перегрузи LC_MESSAGES
Не дает, если LC_ALL стоит ru_RU.UTF-8, то все параметры тоже выставляются так.

фигня какая-то ?

Страница 68 из 1062