Postgis ইনস্টলেশন: টাইপ "জ্যামিতি" বিদ্যমান নেই


97

আমি পোস্টগিস দিয়ে টেবিল তৈরি করার চেষ্টা করছি। আমি এই পৃষ্ঠায় এটি না । কিন্তু যখন আমি postgis.sql ফাইলটি আমদানি করি তখন আমি অনেক ত্রুটি পাই:

ERROR:  type "geometry" does not exist

কেউ কি জানেন যে আমি কীভাবে এটি ঠিক করতে পারি?

উত্তর:


207

আমার একই সমস্যা ছিল তবে এটি নিম্নলিখিত কোডটি চালিয়ে ঠিক করা হয়েছিল

CREATE EXTENSION postgis;

বিস্তারিত,

  1. pgAdmin খুলুন
  2. আপনার ডাটাবেস নির্বাচন করুন (ক্লিক করুন)
  3. বারে "এসকিউএল" আইকনটি ক্লিক করুন
  4. "এক্সটেনশন এক্সটেনশন পোস্টগিস তৈরি করুন;" কোড

4
ধন্যবাদ বিটিডাব্লু, কেউ যদি এই কোডটি চালাতে 'পিএসকিএল' ব্যবহার করে থাকে তবে নিশ্চিত হয়ে নিন যে ভূমিকাটির 'সুপারউজার' বৈশিষ্ট্য / অধিকার রয়েছে।
ইয়াং

4
লাইফ সেভার! আমি ভেবেছিলাম আমি এটি ইতিমধ্যে স্থাপন করেছি তাই আমি ভাবতে থাকি এটি অন্যরকম কিছু ...
জেমস 111

4
মনে রাখবেন যে এটি আপনি ব্যবহার করছেন এমন একটি নির্দিষ্ট ডাটাবেসের সাথে নির্দিষ্ট। এটি ইনস্টলেশন-প্রশস্ত নয়।
ফুকুয়েন্সি

4
আমি একটি পিজি_ডাম্প পিছনে রেখেছি এবং একই সমস্যা ছিল। আমার পোস্টগিজ এক্সটেনশন এটি ডেটাটিকে একটি কাস্টম স্কেমে রাখে, বলা হয় postgis। আমাকে নিম্নলিখিত কমান্ডটি চালানোর দরকার ছিল এবং সবকিছু আবার ঠিকঠাক হয়েছিল:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
ডকম্যান

23

যদি পোস্টগিস-এক্সটেনশন লোড হয়, তবে আপনার এসকিউএল সম্ভবত পাবলিক স্কিমায় সন্ধানের পথটি হারিয়ে যাওয়ার কারণে জ্যামিতি-প্রকারটি খুঁজে পাবে না।

চেষ্টা করুন

SET অনুসন্ধান_পাথ = ..., সর্বজনীন;

আপনার স্ক্র্রিপ্টের প্রথম লাইনে। (প্রতিস্থাপন করুন ... অন্যান্য প্রয়োজনীয় অনুসন্ধানের পথগুলির সাথে)



18

প্রথম ত্রুটি বন্ধ করতে পিএসকিএল পেতে, ব্যবহার করুন -v ON_ERROR_STOP=1(যা পূর্বনির্ধারিতভাবে বন্ধ থাকে , যার কারণে আপনি অনেক ত্রুটি দেখেন)। উদাহরণ স্বরূপ:

psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql

আসল ত্রুটিটি "লাইব্রেরি এক্সটি লোড করা যায়নি" এর মতো কিছু, যা আপনার পরিস্থিতিতে পরিবর্তিত হতে পারে। অনুমান হিসাবে, sql স্ক্রিপ্ট ইনস্টল করার আগে এই কমান্ডটি ব্যবহার করে দেখুন:

ldconfig

( sudoআপনার সিস্টেমের উপর নির্ভর করে আপনার উপসর্গের প্রয়োজন হতে পারে )। এই কমান্ডটি সমস্ত সিস্টেম লাইব্রেরিতে যেমন GEOS- এ পাথ আপডেট করে।


6

আপনি যদি এর পরিবর্তে অন্য স্কিমাতে পোস্টগ্রিস ধরণের ব্যবহার করার চেষ্টা করেন তবে এই ত্রুটিটিও ঘটতে পারে public

আপনি যদি নিজের স্কিমা তৈরি করে পোস্টগিস ২.৩ বা তার বেশি ব্যবহার করে এবং এই ত্রুটির মুখোমুখি হন তবে এখানে বর্ণিত হিসাবে নিম্নলিখিতটি করুন :

CREATE SCHEMA IF NOT EXISTS my_schema;
CREATE extension postgis;

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

ALTER EXTENSION postgis 
  SET SCHEMA my_schema;

ALTER EXTENSION postgis 
  UPDATE TO "2.5.2next";

ALTER EXTENSION postgis 
  UPDATE TO "2.5.2";

SET search_path TO my_schema;

তারপরে আপনি পোস্টজিস চমত্কার ব্যবহার করতে এগিয়ে যেতে পারেন।



3

আপনার অবশ্যই এটিও নিশ্চিত করতে হবে যে আপনি যে পোস্টগ্রিজ এক্সটেনশনটি ব্যবহার করার চেষ্টা করছেন সেটির স্কিমায় অ্যাক্সেস রয়েছে যেখানে পোস্টগ্রিস সেটআপ রয়েছে (যে টিউটোরিয়ালে আমি পড়েছি তাকে 'পোস্টগিস' বলা হয়)।

আমার কেবল এই ত্রুটি ছিল, এবং এটি সমাধান হয়েছিল কারণ আমি কেবলমাত্র একটি নতুন ব্যবহারকারীকে ডাটাবেসে অ্যাক্সেস দিয়েছি। আমি যে ডাটাবেস তৈরি করেছি তাতে আমি দৌড়েছি:

grant all on schema postgis to USERNAME; 

এবং এটি এই ত্রুটিটি সমাধান করেছে


1

এখানে দেওয়া উত্তরগুলি আপনার সমস্যার সমাধান করতে পারে, তবে আপনি যদি ইতিমধ্যে আপনার ডিবিতে পোস্টগিস সক্ষম করে থাকেন তবে সমস্যাটি হ'ল আপনি পোস্টগিস এক্সটেনশন সক্ষম হওয়া ব্যতীত অন্য কোনও স্কিমে কোনও পোস্টগিস টেবিল (জ্যামিতির কলাম সহ) পুনরুদ্ধার করার চেষ্টা করছেন। পিজিএডমিনে আপনি পোস্টগিজ এক্সটেনশনে ক্লিক করতে পারেন এবং কোন স্কিমা নির্দিষ্ট করা আছে তা দেখতে পারেন। আপনি যদি জ্যামিতি কলাম সহ একটি টেবিলটিকে অন্য কোনও স্কিমে পুনরুদ্ধার করার চেষ্টা করছেন, আপনি এই ত্রুটিটি পেয়ে যেতে পারেন।

আমি আমার পোস্টগিজ এক্সটেনশনে পরিবর্তন করে এটি সমাধান করেছি - তবে আমি নিশ্চিত নই যে এটি করা সবচেয়ে ভাল উপায় ছিল। আমি কেবল জানি এটি আমাকে টেবিলটি পুনরুদ্ধার করার অনুমতি দিয়েছে।


পোস্টগিস সংস্করণ ২.৩ অবধি আপনি এই এক্সটেনশানটিকে অন্য স্কিমাতে সরিয়ে নিতে পারেন যা আমার জন্য এই সমস্যাটি কয়েকবার সমাধান করেছে
দানিয়েল টিউলপ

0

বা ...

cursor.execute('create extension postgis')

আপনার পাইথন প্রোগ্রামে সাইকোপজি 2 থেকে একটি বর্তমান কার্সার ব্যবহার করে।


0

প্রথমে নিশ্চিত হয়ে নিন যে আপনি (পিজি সংস্করণটির সাথে মিলে: পিএসকিএল-ভি) পোস্টগিস ইনস্টল করেছেন:

sudo apt install postgis postgresql-9.6-postgis-2.3

টেবিল তৈরির ঠিক আগে যুক্ত করুন:

db.engine.execute('create extension postgis') 
db.create_all()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.