LINUX.ORG.RU

Не могу выполнить UPDATE, DELETE, SELECT через WHERE

 


0

1

При попытке выполнить обновление или удаление строки выдается сообщение об отсутствии поля таблицы. Хотя оно есть. Что я делаю не так?

mgi@mgi-Linux:~$ sudo su postgres [sudo] пароль для mgi: postgres@mgi-Linux:/home/mgi$ psql psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1), сервер 10.9 (Ubuntu 10.9-1.pgdg18.04+1)) Введите «help», чтобы получить справку.

postgres=# \c megriv psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1), сервер 10.9 (Ubuntu 10.9-1.pgdg18.04+1)) Вы подключены к базе данных «megriv» как пользователь «postgres». megriv=# SELECT * FROM formanpa; codForma | textForma ----------+------------------ 11 | Aaaaaaaaaaaaa 22 | Bbbbbbbb 33 | Cccccccccccccccc (3 строки)

megriv=# UPDATE formanpa SET textForma = 'B2b2b2b2b2' WHERE codForma = '22'; ОШИБКА: столбец «codforma» не существует СТРОКА 1: ...PDATE formanpa SET textForma = 'B2b2b2b2b2' WHERE codForma =... ^ ПОДСКАЗКА: Возможно, предполагалась ссылка на столбец «formanpa.codForma». megriv=# UPDATE formanpa SET textForma = 'B2b2b2b2b2' WHERE formanpa.codForma = '22'; ОШИБКА: столбец formanpa.codforma не существует

mgi@mgi-Linux:~$ sudo su postgres 
[sudo] пароль для mgi: 

postgres@mgi-Linux:/home/mgi$ psql psql 
(11.4 (Ubuntu 11.4-1.pgdg18.04+1), сервер 10.9 (Ubuntu 10.9-1.pgdg18.04+1)) 
Введите «help», чтобы получить справку.

postgres=# \c megriv psql 
(11.4 (Ubuntu 11.4-1.pgdg18.04+1), сервер 10.9 (Ubuntu 10.9-1.pgdg18.04+1)) 
Вы подключены к базе данных «megriv» как пользователь «postgres». 

megriv=# SELECT * FROM formanpa; 
 codForma | textForma 
----------+------------------ 
       11 | Aaaaaaaaaaaaa 
       22 | Bbbbbbbb 
       33 | Cccccccccccccccc 
(3 строки)

megriv=# UPDATE formanpa SET textForma = 'B2b2b2b2b2' WHERE codForma = '22'; 
ОШИБКА: столбец «codforma» не существует 
СТРОКА 1: ...PDATE formanpa SET textForma = 'B2b2b2b2b2' WHERE codForma =... 
             ^ ПОДСКАЗКА: Возможно, предполагалась ссылка на столбец «formanpa.codForma». 

megriv=# UPDATE formanpa SET textForma = 'B2b2b2b2b2' WHERE formanpa.codForma = '22'; 
ОШИБКА: столбец formanpa.codforma не существует

отформатировал твой говнокод

bvn13 ★★★★★ ()
Последнее исправление: bvn13 (всего исправлений: 1)
Ответ на: комментарий от megriv

вам уже объяснили. В названии таблицы(или колонки) соблюдайте регистр букв. Если есть большие буквы (или специальные символы) - помещайте в двойные кавычки.

Другая возможная причина ненахождения таблицы - если она не в схеме по умолчанию. Обычно это схема public. В таком случае надо или указывать схему в явном виде или выбрать другую схему как используемую по умолчанию.

Partisan ★★ ()
Ответ на: комментарий от Legioner

необязательно. Есть конструкторы таблиц, например в составе pgAdmin. Они позволяют обойтись без написания оператора CREATE TABLE. После того, как таблица создана в конструкторе, можно посмотреть, какой оператор CREATE TABLE создался для этого, и при желании отредактировать его.

Применять ли большие буквы или пользоваться только маленькими дл экономии «» - решать самостоятельно. Я применяю большие буквы для наглядности, а «» использую всегда для единообразия. Но не вижу смысла затевать спор.

Partisan ★★ ()