powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
15 сообщений из 15, страница 1 из 1
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33874782
shrdlu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...

Есть вот такие элементарные таблицы:

create table parent (
pid serial8,
valid varchar(8) default 'v',
tstamp timestamp without time zone default now(),
dbuser varchar(200) default getpgusername()
);

create table posts (
pstid serial8 primary key,
post varchar(200) not null
) inherits (parent);

Забиваю в них данные:

touch sampledata.sql

insert into posts (post) values ('Генеральный директор');
insert into posts (post) values ('Системный администратор');
insert into posts (post) values ('Начальник отдела');
insert into posts (post) values ('Заместитель генерального директора');
insert into posts (post) values ('Рабочий');
insert into posts (post) values ('Менеджер');
insert into posts (post) values ('Бухгалтер');
insert into posts (post) values ('Главный бухгалтер');

sudo -u pgsql /usr/local/bin/psql mailbook < sampledata.sql

B пытаюсь выполнить простые SELECT. Результат превосходит все ожидания:

Добро пожаловать в psql 8.0.4 - Интерактивный Терминал PostgreSQL.

mailbook=# select * from posts;
LOG: statement: select * from posts;
LOG: duration: 2.631 ms
pid | valid | tstamp | dbuser | pstid | post
-----+-------+----------------------------+--------+-------+--------------------------------------------
2 | v | 2006-07-22 01:43:56.301282 | pgsql | 1 | Генеральный директор
3 | v | 2006-07-22 01:44:01.541886 | pgsql | 2 | Системный администратор
4 | v | 2006-07-22 01:44:07.024343 | pgsql | 3 | Начальник отдела
11 | v | 2006-07-22 01:45:13.304819 | pgsql | 4 | Заместитель генерального директора
12 | v | 2006-07-22 01:45:20.067468 | pgsql | 5 | Рабочий
13 | v | 2006-07-22 01:45:24.935647 | pgsql | 6 | Менеджер
14 | v | 2006-07-22 01:45:29.543318 | pgsql | 7 | Бухгалтер
15 | v | 2006-07-22 01:45:35.491483 | pgsql | 8 | Главный бухгалтер
(записей: 8)

mailbook=# select * from posts where post = 'Генеральный директор';
LOG: statement: select * from posts where post = 'Генеральный директор';
LOG: duration: 1.985 ms
pid | valid | tstamp | dbuser | pstid | post
-----+-------+----------------------------+--------+-------+------------------------------
2 | v | 2006-07-22 01:43:56.301282 | pgsql | 1 | Генеральный директор
(1 запись)

mailbook=# select * from posts where post = 'Заместитель генерального директора';
LOG: statement: select * from posts where post = 'Заместитель генерального директора';
LOG: duration: 1.660 ms
pid | valid | tstamp | dbuser | pstid | post
-----+-------+--------+--------+-------+------
(записей: 0)


Единственное, что удалось выясниь за целый день - эта беда не возникает, если данные загонять через pctl. Если ввожу данные в
таблицу через веб-форму или в пакетном режиме через psql mailbook < file.sql
Не зависти ни от кодировки, ни от пользователя, под которым работаешь.
Что за беда?
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33874958
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shrdluЧто за беда?
Действительно, что за беда-то?
Вопрос в чем? Почему записи не нашел?
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33875041
shrdlu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pamir shrdluЧто за беда?
Действительно, что за беда-то?
Вопрос в чем? Почему записи не нашел?
Вот именно, почему? Точнее, почему часть записей находит, а часть нет?
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33875117
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из опыта известно, что чудес не бывает.
Попробуй найти запись по ID, если найдется, значит сравнивай строку, которая в базе и которую ты ставишь ограничителем. Возможно где-то лишний пробел или еще какой-то символ. Бывают засады с одинаково пишущимися русскими и английскими буквами. (Буква С меня вообще убивает - они на одной клавише).
Попробуй из общей выборки скопировать текстовую строку и подставить в ограничение - найдет или нет?
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33875118
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и еще, какая кодировка в базе?
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33875148
shrdlu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pamirДа, и еще, какая кодировка в базе?
KOI-8R
Что чудес не бывает, в курсе, но до сих пор разбираюсь. По id ищет без проблем. Засада в том, что в ряде случаев надо искать как раз id по имени.
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33875171
shrdlu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, и еще, к вопросу о чудесах и возможных ошибках с лишними пробелами/совпадающими в кириллице и латинице символами. Провел вот такой эксперимент только что:

mailbook=# select * from posts where post = 'Заместитель генерального директора';
LOG: statement: select * from posts where post = 'Заместитель генерального директора';
LOG: duration: 1.541 ms
pid | valid | tstamp | dbuser | pstid | post
-----+-------+--------+--------+-------+------
(записей: 0)

Записей ноль. А теперь вызываю предыдущий select и меняю знак равенства на LIKE:

mailbook=# select * from posts where post like 'Заместитель генерального директора';
LOG: statement: select * from posts where post like 'Заместитель генерального директора';
LOG: duration: 2.004 ms
pid | valid | tstamp | dbuser | pstid | post
-----+-------+----------------------------+---------+-------+------------------------------------
11 | v | 2006-07-22 01:45:13.304819 | pgsql | 4 | Заместитель генерального директора
(1 запись)

И запись есть!
Помнится, то ли в interbase то ли где-то еще был такой глюк, что для текстовых полей надо было использовать исключительно конструкции like - но postgres этим вроде не страдает?
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33876075
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В качестве бреда: клиент занимаица конвертацией строки при = и не занимаица - при Like
например после
Set client_encoding = 'WIN1250';
и вставки, а после того
Set client_encoding = 'UTF8';
и выборке "только что вставленного" - вы не найдете того, что "только что вставили".

зы. поянтно, что предположение достаточно бредовое. но почему бы причине не быть где-то рядом? не столь бредовым но из того же разряда.
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33876257
Алексей Ключников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может дело в не очень хорошей поддержке постгресом koi8-r.
Обновитесь до 8.1.4

зы
С точки зрения конструирования бд, вынести все должности в справочник.
Это было бы правильно и позволило бы поднять быстродействие и избавило
бы от подобных недразумений.
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33876284
Алексей Ключников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опс. извиняйте, не вник.
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33876352
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lower/upper нормально с кириллицей работают? всмысле initdb выполнена в koi8 локали или нет?
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33876595
IgorNK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал ваш пример в 8ю1ю4. Запись выбирается в обоих случаях

Код: plaintext
1.
select * from posts where post = 'Заместитель генерального директора';
select * from posts where post like 'Заместитель генерального директора';

У меня случались похожие проблемы, но это отдельная тема. Попытайтесь привести искомую строку к тому же типу, что и поле, т.е.

Код: plaintext
select * from posts where post = 'Заместитель генерального директора'::varchar( 200 );
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33876759
shrdlu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_serglower/upper нормально с кириллицей работают? всмысле initdb выполнена в koi8 локали или нет?

С lower/upper проблем не замечал, а вот в какой локали последний раз делалось iniddb - уже не помню, надо взять это на заметку.
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33876771
shrdlu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNKПопробовал ваш пример в 8ю1ю4. Запись выбирается в обоих случаях

Код: plaintext
1.
select * from posts where post = 'Заместитель генерального директора';
select * from posts where post like 'Заместитель генерального директора';

У меня случались похожие проблемы, но это отдельная тема. Попытайтесь привести искомую строку к тому же типу, что и поле, т.е.

Код: plaintext
select * from posts where post = 'Заместитель генерального директора'::varchar( 200 );


К сожалению, сейчас нет возможности обновить постгрес. Сделаю при первой возможности. За совет с приведением типов спасибо, пойду пробовать.
...
Рейтинг: 0 / 0
Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
    #33877076
shrdlu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, проблема решилась. Видимо, в последний раз initdb выполнялся из под кого-то нерусского. Снес весь кластер, проинициализировал заново, теперь все ищет как миленький. Всем спасибо!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Я в полном ауте... SELECT вместо результатов показывает год рождения Чингиз-хана...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]