คำถามติดแท็ก postgresql

PostgreSQL ทุกรุ่น เพิ่มแท็กเฉพาะรุ่นเพิ่มเติมเช่น postgresql-11 หากบริบทนั้นสำคัญ

2
UPSERT ที่มีความขัดแย้งโดยใช้ค่าจากตารางแหล่งที่มาในส่วน UPDATE
ได้รับ: CREATE TABLE A ( PK_A INT8 NOT NULL, A INT8, PRIMARY KEY (PK_A) ); CREATE TABLE B ( PK_B INT8 NOT NULL, B INT8, PRIMARY KEY (PK_B) ); แบบสอบถามนี้: insert into table_b (pk_b, b) select pk_a,a from table_a on conflict (b) do update set b=a; ทำให้เกิดข้อผิดพลาดดังต่อไปนี้: ERROR: column "a" …

2
pg_restore: [archiver (db)] ไม่สามารถดำเนินการค้นหา: ข้อผิดพลาด: schema“ สาธารณะ” มีอยู่แล้ว
ฉันใช้ pg_dump / pg_restore เพื่อสำรองและกู้คืนฐานข้อมูล PostgreSQL แต่ฉันได้รับข้อความแสดงข้อผิดพลาด (และสถานะทางออกที่ไม่เป็นศูนย์) จาก pg_restore ฉันลองใช้เคสพื้นฐานแบบง่าย ๆ (อธิบายไว้ด้านล่าง) แต่ยังมีข้อผิดพลาดเหล่านี้: pg_restore: [archiver (db)] ข้อผิดพลาดขณะประมวลผล TOC: pg_restore: [archiver (db)] ข้อผิดพลาดจากรายการ TOC 5; 2615 2200 SCHEMA postgres สาธารณะ pg_restore: [archiver (db)] ไม่สามารถดำเนินการค้นหา: ข้อผิดพลาด: schema "สาธารณะ" มีอยู่แล้ว คำสั่งคือ: สร้างสาธารณะ SCHEMA; ขั้นตอนในการทำซ้ำ: ติดตั้ง vanilla Ubuntu 14.04 distro สดใหม่ (ฉันใช้ Vagrant …

1
อาร์เรย์แบบสอบถาม PostgreSQL JSON เทียบกับหลายค่า
ฉันต้องการเขียนแบบสอบถามกับjsonbประเภทใน Postgres ที่กำหนดอาร์เรย์รหัสลูกค้าจะพบกลุ่มที่เกี่ยวข้อง รับตารางตัวอย่างนี้: CREATE TABLE grp(d JSONB NOT NULL); INSERT INTO grp VALUES ('{"name":"First","arr":["foo"], "customers":[{"id":"1", "name":"one"},{"id":"2", "name":"two"}]}') , ('{"name":"Second","arr":["foo","bar"], "customers":[{"id":"3", "name":"three"},{"id":"4", "name":"four"}]}') , ('{"name":"Third","arr":["bar","baz"], "customers":[{"id":"5", "name":"five"},{"id":"6", "name":"seven"}]}'); ฉันพบคำถามที่คล้ายกัน ( PostgreSql JSONB SELECT เทียบกับหลายค่า ) และจัดการเพื่อให้ได้สิ่งที่ฉันต้องการในอาร์เรย์อย่างง่ายโดยใช้แบบสอบถามนี้: SELECT d FROM grp WHERE d->'arr' ?| ARRAY['foo', 'bar']; อย่างไรก็ตามฉันไม่สามารถใช้งานได้เมื่ออาร์เรย์มีวัตถุ JSON : SELECT d …

4
การทำธุรกรรมภายในการทำธุรกรรม
PostgreSQL จะแสดงพฤติกรรมแบบใดถ้าตัวอย่างสคริปต์ด้านล่างนี้ถูกเรียกใช้ BEGIN; SELECT * FROM foo; INSERT INTO foo(name) VALUES ('bar'); BEGIN; <- The point of interest END; PostgreSQL จะยกเลิกรายการที่สองBEGINหรือไม่หรือจะมีการตัดสินใจกระทำโดยนัยจากนั้นเรียกใช้BEGIN ENDบล็อกในตอนท้ายว่าเป็นรายการแยกต่างหาก

2
Postgres ฟัง / แจ้งเตือนเป็นคิวข้อความ
มีวิธีใช้ฟีเจอร์ Postgres Listen / Notify เพื่อส่งข้อความไปยังช่องและมีผู้ฟังเพียงคนเดียวที่ใช้ข้อความนี้หรือไม่? จุดประสงค์นี้คือฉันมีแอพ 'คนงาน' หลายคนที่ฟังช่อง Postgres เดียวกันทั้งหมด แต่ฉันต้องการให้งานทำเพียงครั้งเดียวต่อข้อความที่ได้รับผ่านช่องทางแจ้งเตือน หาก Listen / Notify ไม่ใช่คุณสมบัติที่ถูกต้องใน Postgres ฉันควรใช้คุณสมบัติแยกต่างหากหรือไม่? โดยหลักการแล้วฉันต้องการทำสิ่งนี้โดยไม่ใช้ส่วนขยายเพิ่มเติมใด ๆ

1
สิ่งที่ จำกัด จำนวนการเชื่อมต่อ?
ตามhttps://devcenter.heroku.com/articles/heroku-postgres-legacy-plansขีด จำกัด การเชื่อมต่อคือ 500 ตามhttps://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server "โดยทั่วไป PostgreSQL บนฮาร์ดแวร์ที่ดีสามารถรองรับการเชื่อมต่อได้สองสามร้อย" อะไรคือปัจจัยที่กำหนดในข้อ จำกัด นี้ #CPU แกน แกะ? OS?

1
รับภาพรวมภายหลังจาก Amazon RDS
ฉันไม่สามารถหาวิธีง่ายๆในการรับสำเนาของการสำรองข้อมูลทุกคืนที่ฉันใช้กับ Amazon RDS postgres ของฉันดังนั้นฉันจึงสามารถกู้คืนได้บนเครื่องคอมพิวเตอร์ของฉันเพื่อเล่น ตอนนี้ฉันกำลังทำ pg_dump เมื่อฉันต้องการสำเนา แต่มันก็ดีกว่า (และเร็วกว่าน่าจะเป็น) เพื่อให้สามารถดาวน์โหลดภาพรวมเหล่านั้นได้ มันเป็นไปไม่ได้เหรอ?

1
มี psql เทียบเท่ากับประวัติการค้นหาย้อนกลับของ bash หรือไม่
ฉันชื่นชอบbashreverse-search-history (Cr) (คุณสมบัติบรรทัดคำสั่ง) ของ: ค้นหาย้อนหลังเริ่มต้นที่บรรทัดปัจจุบันและเลื่อน 'up' ผ่านประวัติตามความจำเป็น นี่คือการค้นหาที่เพิ่มขึ้น เมื่อฉันตีcontrol-rในbashที่ฉันได้รับต่อไปนี้: (reverse-i-search)`': และฉันสามารถพิมพ์อักขระของคำสั่งที่เรียกใช้งานก่อนหน้านี้ได้โดยให้ความเคารพกับสิ่งที่ฉันกำลังมองหา หากฉันทำผิดฉันสามารถป้อนcontrol-hเพื่อลบอักขระ (เทียบเท่าbackspace) ฟังก์ชันบรรทัดคำสั่งนี้ทำให้ง่ายต่อการอ้างถึงคำสั่งที่เรียกใช้ก่อนหน้านี้ ฉันสงสัยว่ามีความสามารถดังกล่าวอยู่psqlหรือไม่ ฉันคิดว่ามันไม่มีประสิทธิภาพมากที่จะพึ่งพาเพียงและcontrol-pcontrol-n สำหรับสิ่งที่คุ้มค่าผมใช้PostgreSQL 9.3.1 on x86_64-apple-darwin13.0.0, compiled by Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn), 64-bit- ได้รับผ่านทางPostgres.app

2
ทำไมถึงมี PostgreSQL Turtle
ฉันเพิ่งตรวจสอบหน้าโฆษณาชวนเชื่อของ PostgreSQLและฉันพบชิ้นงานศิลปะชิ้นนี้: มันเป็นโลโก้"สไตล์เต่า" PostgreSQL อายุเท่าไหร่และ PostgreSQL เคยใช้เต่าแทนช้างอย่างเป็นทางการหรือไม่? เรื่องราวของที่นี่คืออะไร?
17 postgresql 

3
มีวิธีเข้าถึงตารางชั่วคราวของเซสชันอื่น ๆ ใน postgres หรือไม่?
ฉันทำงานกับแอพพลิเคชั่น Windows ที่ใช้ฐานข้อมูล postgres (ในพื้นที่) และเก็บข้อมูลบางอย่างไว้ในตารางชั่วคราว ฉันต้องการดูตารางชั่วคราว แต่ pgadmin และ dbVis บอกฉัน: ERROR: cannot access temporary tables of other sessionsเมื่อพยายามสืบค้นข้อมูล ฉันพยายามเปลี่ยนการอนุญาตของ schema และตาราง แต่ดูเหมือนจะไม่ช่วยแม้ว่าฉันจะเข้าถึงฐานข้อมูลกับผู้ใช้เดียวกันกับโปรแกรมตัวเอง (อย่างน้อยใน dbVis) มีการตั้งค่าที่ฉันสามารถเปลี่ยนในฐานข้อมูลของฉันที่อนุญาตให้ฉันเข้าถึง "รูท" ทุกเซสชันในฐานข้อมูลของฉันได้หรือไม่?

4
วิธีแก้ข้อผิดพลาดการคัดลอกลำดับไบต์ UTF8 ที่ไม่ถูกต้องในการกู้คืนเมื่อฐานข้อมูลต้นทางถูกเข้ารหัสใน UTF8
ฉันได้รับมอบหมายให้ย้ายฐานข้อมูล PostgreSQL 8.2.x ไปยังเซิร์ฟเวอร์อื่น เมื่อต้องการทำสิ่งนี้ฉันใช้ pgAdmin 1.12.2 (บน Ubuntu 11.04 โดยวิธี) และใช้การสำรองข้อมูลและคืนค่าโดยใช้รูปแบบที่กำหนดเอง / บีบอัด (.backup) และการเข้ารหัส UTF8 ฐานข้อมูลดั้งเดิมอยู่ใน UTF8 ดังนี้: -- Database: favela -- DROP DATABASE favela; CREATE DATABASE favela WITH OWNER = favela ENCODING = 'UTF8' TABLESPACE = favela CONNECTION LIMIT = -1; ฉันกำลังสร้างฐานข้อมูลนี้อย่างนี้บนเซิร์ฟเวอร์ปลายทาง แต่เมื่อฉันกู้คืนฐานข้อมูลจากไฟล์. backup โดยใช้ตัวเลือก Restore มันทำให้ฉันมีข้อผิดพลาดบางอย่าง: …

1
PostgreSQL จัดการกับจุดตรวจระหว่างการสำรองข้อมูลที่เปิดใช้งาน WAL ได้อย่างไร
บน PostgreSQL v9.0 ฉันเป็นระบบเก็บถาวร WAL ที่ใช้งานได้ ดังนั้นไฟล์ WAL จะถูกเก็บถาวรตามกฎเกณฑ์ (เมื่อมีการสร้าง 3 WAL หรือหาก WAL มีอายุมากกว่า 15 นาที) ตอนนี้ฉันเพิ่มไบนารีแพคเกจของไดเรกทอรี PG_DATA (ยกเว้นไดเรกทอรีย่อย pg_xlog) ต้องการทำเช่นนั้นฉันทำสำเนาไบนารีและpg_start_backup(),pg_stop_backup() ฉันคิดว่าฉันเข้าใจค่อนข้างดีว่าสิ่งที่ pg_start_backup และ pg_stop_backup กำลังทำอยู่คนแรกสร้างจุดตรวจและคนสุดท้ายทำให้แน่ใจว่าไฟล์ WAL สุดท้ายถูกเก็บถาวร จากเอกสารอย่างเป็นทางการเราจะเห็นว่าสำหรับการคัดลอกข้อมูลไบนารีเราควร: ดำเนินการสำรองข้อมูลโดยใช้เครื่องมือระบบไฟล์สำรองที่สะดวกสบายเช่น tar หรือ cpio (ไม่ใช่ pg_dump หรือ pg_dumpall) ไม่จำเป็นหรือไม่ต้องการหยุดการทำงานปกติของฐานข้อมูลในขณะที่คุณทำเช่นนี้ ดังนั้นฉันค่อนข้างงุนงง นี่หมายความว่าสามารถดำเนินการจุดตรวจได้ในขณะที่เราทำสำเนา ฉันเห็นเอกสารจำนวนมากที่ระบุว่าคำสั่งคัดลอกควรอนุญาตให้มีการเปลี่ยนแปลงข้อมูลในขณะที่ทำการคัดลอกฉันก็โอเคกับเรื่องนี้เพียงแค่หาเครื่องมือที่เหมาะสม แต่คำถามของฉันคือวิธีที่ postgreSQL จะจัดการการกู้คืนด้วยเนื้อหา pg_data ที่มีไฟล์บางไฟล์ที่ไม่สอดคล้องกัน (บางไฟล์มาจากจุดตรวจก่อนหน้า, บางหลังมาจากไหน)? โดยการเล่นซ้ำบันทึกธุรกรรม …


2
REINDEX อันตรายหรือไม่?
ฉันพยายามไปCOUNT(*)ที่โต๊ะที่มี 150,000 แถวที่มีคีย์หลัก มันเป็นเครื่องมือประมาณ 5 นาทีดังนั้นฉันจึงคิดว่านี่เป็นปัญหาการจัดทำดัชนี อ้างถึงคู่มือ PostgreSQL : REINDEX นั้นคล้ายกับการดร็อปและสร้างดัชนีใหม่ซึ่งเนื้อหาดัชนีจะถูกสร้างใหม่ตั้งแต่เริ่มต้น อย่างไรก็ตามข้อควรพิจารณาในการล็อคค่อนข้างแตกต่างกัน REINDEX ล็อคการเขียน แต่ไม่อ่านตารางหลักของดัชนี นอกจากนี้ยังใช้การล็อกแบบเอกสิทธิ์เฉพาะบุคคลในดัชนีเฉพาะที่กำลังประมวลผลซึ่งจะบล็อกการอ่านที่พยายามใช้ดัชนีนั้น (... ) CREATE INDEX ที่ตามมาล็อคการเขียน แต่ไม่อ่าน เนื่องจากดัชนีไม่อยู่ที่นั่นการอ่านจะไม่พยายามใช้ซึ่งหมายความว่าจะไม่มีการบล็อก แต่การอ่านอาจถูกบังคับให้สแกนตามลำดับราคาแพง จากประสบการณ์ของคุณคุณสามารถบอกได้: เป็นREINDEXINGอันตรายหรือไม่? มันจะเป็นอันตรายต่อความสอดคล้องของข้อมูลหรือไม่ ใช้เวลานานไหม? มันเป็นทางออกที่เป็นไปได้สำหรับสถานการณ์ของฉันหรือไม่ ปรับปรุง: วิธีแก้ปัญหาที่ใช้งานได้สำหรับเราคือสร้างดัชนีเดียวกันใหม่ด้วยชื่ออื่นแล้วลบดัชนีเก่า การสร้างดัชนีนั้นรวดเร็วมากและเราได้ลดขนาดดัชนีจาก 650 MB เป็น 8 MB ใช้ a COUNT(*)กับbetweenใช้เวลาเพียง 3 วินาที
17 postgresql 

1
Postgres: SET NOT NULL เป็นอย่างไร "มีประสิทธิภาพมากขึ้น" กว่าข้อ จำกัด การตรวจสอบ
ในเอกสาร PostgreSQL สำหรับข้อ จำกัดกล่าวว่า ข้อ จำกัด แบบไม่เป็นโมฆะเทียบเท่ากับการสร้างข้อ จำกัด การตรวจสอบCHECK (column_name IS NOT NULL)แต่ใน PostgreSQL การสร้างข้อ จำกัด แบบไม่เป็นโมฆะอย่างชัดเจนนั้นมีประสิทธิภาพมากกว่า ฉันสงสัย "มีประสิทธิภาพมากขึ้น" หมายความว่าอย่างไร สิ่งที่เป็นอันตรายของการใช้งานCHECK (column_name IS NOT NULL)แทนSET NOT NULL? ฉันต้องการเพิ่มNOT VALID CHECKข้อ จำกัด และตรวจสอบความถูกต้องแยกต่างหาก (ดังนั้นAccessExclusiveLockจะถูกเก็บไว้ในช่วงเวลาสั้น ๆ เท่านั้นสำหรับการเพิ่มข้อ จำกัด และจากนั้น a ShareUpdateExclusiveLockจะถูกเก็บไว้สำหรับขั้นตอนการตรวจสอบที่ยาวขึ้น): ALTER TABLE table_name ADD CONSTRAINT column_constraint CHECK (column_name IS NOT NULL) …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.