আমি পোস্টগিস দিয়ে টেবিল তৈরি করার চেষ্টা করছি। আমি এই পৃষ্ঠায় এটি না । কিন্তু যখন আমি postgis.sql ফাইলটি আমদানি করি তখন আমি অনেক ত্রুটি পাই:
ERROR: type "geometry" does not exist
কেউ কি জানেন যে আমি কীভাবে এটি ঠিক করতে পারি?
উত্তর:
আমার একই সমস্যা ছিল তবে এটি নিম্নলিখিত কোডটি চালিয়ে ঠিক করা হয়েছিল
CREATE EXTENSION postgis;
বিস্তারিত,
postgis
। আমাকে নিম্নলিখিত কমান্ডটি চালানোর দরকার ছিল এবং সবকিছু আবার ঠিকঠাক হয়েছিল:DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; END; $$ ;
যদি পোস্টগিস-এক্সটেনশন লোড হয়, তবে আপনার এসকিউএল সম্ভবত পাবলিক স্কিমায় সন্ধানের পথটি হারিয়ে যাওয়ার কারণে জ্যামিতি-প্রকারটি খুঁজে পাবে না।
চেষ্টা করুন
SET অনুসন্ধান_পাথ = ..., সর্বজনীন;
আপনার স্ক্র্রিপ্টের প্রথম লাইনে। (প্রতিস্থাপন করুন ... অন্যান্য প্রয়োজনীয় অনুসন্ধানের পথগুলির সাথে)
আপনি এটি টার্মিনাল থেকে করতে পারেন:
psql mydatabasename -c "CREATE EXTENSION postgis";
প্রথম ত্রুটি বন্ধ করতে পিএসকিএল পেতে, ব্যবহার করুন -v ON_ERROR_STOP=1
(যা পূর্বনির্ধারিতভাবে বন্ধ থাকে , যার কারণে আপনি অনেক ত্রুটি দেখেন)। উদাহরণ স্বরূপ:
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
আসল ত্রুটিটি "লাইব্রেরি এক্সটি লোড করা যায়নি" এর মতো কিছু, যা আপনার পরিস্থিতিতে পরিবর্তিত হতে পারে। অনুমান হিসাবে, sql স্ক্রিপ্ট ইনস্টল করার আগে এই কমান্ডটি ব্যবহার করে দেখুন:
ldconfig
( sudo
আপনার সিস্টেমের উপর নির্ভর করে আপনার উপসর্গের প্রয়োজন হতে পারে )। এই কমান্ডটি সমস্ত সিস্টেম লাইব্রেরিতে যেমন GEOS- এ পাথ আপডেট করে।
আপনি যদি এর পরিবর্তে অন্য স্কিমাতে পোস্টগ্রিস ধরণের ব্যবহার করার চেষ্টা করেন তবে এই ত্রুটিটিও ঘটতে পারে 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;
তারপরে আপনি পোস্টজিস চমত্কার ব্যবহার করতে এগিয়ে যেতে পারেন।
আপনাকে অবশ্যই আপনার ডাটাবেসে এক্সটেনশন সক্ষম করতে হবে।
psql my_database -c "CREATE EXTENSION postgis;"
আপনার অবশ্যই এটিও নিশ্চিত করতে হবে যে আপনি যে পোস্টগ্রিজ এক্সটেনশনটি ব্যবহার করার চেষ্টা করছেন সেটির স্কিমায় অ্যাক্সেস রয়েছে যেখানে পোস্টগ্রিস সেটআপ রয়েছে (যে টিউটোরিয়ালে আমি পড়েছি তাকে 'পোস্টগিস' বলা হয়)।
আমার কেবল এই ত্রুটি ছিল, এবং এটি সমাধান হয়েছিল কারণ আমি কেবলমাত্র একটি নতুন ব্যবহারকারীকে ডাটাবেসে অ্যাক্সেস দিয়েছি। আমি যে ডাটাবেস তৈরি করেছি তাতে আমি দৌড়েছি:
grant all on schema postgis to USERNAME;
এবং এটি এই ত্রুটিটি সমাধান করেছে
এখানে দেওয়া উত্তরগুলি আপনার সমস্যার সমাধান করতে পারে, তবে আপনি যদি ইতিমধ্যে আপনার ডিবিতে পোস্টগিস সক্ষম করে থাকেন তবে সমস্যাটি হ'ল আপনি পোস্টগিস এক্সটেনশন সক্ষম হওয়া ব্যতীত অন্য কোনও স্কিমে কোনও পোস্টগিস টেবিল (জ্যামিতির কলাম সহ) পুনরুদ্ধার করার চেষ্টা করছেন। পিজিএডমিনে আপনি পোস্টগিজ এক্সটেনশনে ক্লিক করতে পারেন এবং কোন স্কিমা নির্দিষ্ট করা আছে তা দেখতে পারেন। আপনি যদি জ্যামিতি কলাম সহ একটি টেবিলটিকে অন্য কোনও স্কিমে পুনরুদ্ধার করার চেষ্টা করছেন, আপনি এই ত্রুটিটি পেয়ে যেতে পারেন।
আমি আমার পোস্টগিজ এক্সটেনশনে পরিবর্তন করে এটি সমাধান করেছি - তবে আমি নিশ্চিত নই যে এটি করা সবচেয়ে ভাল উপায় ছিল। আমি কেবল জানি এটি আমাকে টেবিলটি পুনরুদ্ধার করার অনুমতি দিয়েছে।
বা ...
cursor.execute('create extension postgis')
আপনার পাইথন প্রোগ্রামে সাইকোপজি 2 থেকে একটি বর্তমান কার্সার ব্যবহার করে।