এটা কি সম্ভব? আমি কি সংযোগ ইউআরএল এটি নির্দিষ্ট করতে পারি? কিভাবে যে কি?
এটা কি সম্ভব? আমি কি সংযোগ ইউআরএল এটি নির্দিষ্ট করতে পারি? কিভাবে যে কি?
উত্তর:
আমি জানি এটির ইতিমধ্যে উত্তর দেওয়া হয়েছিল, তবে আমি কেবল একই সমস্যাটিতে ছড়িয়ে পড়েছি যা তরলবেস কমান্ড লাইনের জন্য স্কিমাটি নির্দিষ্ট করার চেষ্টা করছে।
জেডিবিসি ভি 9.4 হিসাবে আপডেট করুন আপনি নতুন কারেন্টশেমা প্যারামিটারের মতো ইউআরএল নির্দিষ্ট করতে পারেন:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
পূর্ববর্তী প্যাচের ভিত্তিতে উপস্থিত হবে:
যা ইউআরএল এর মতো প্রস্তাবিত:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
setSchema
আপনার সংযোগ তৈরির পরে জেডিসিবি পদ্ধতিটি ব্যবহার করার চেষ্টা করুন । সাম্প্রতিক পোস্টগ্রিস ড্রাইভারের সাথে আমার জন্য কাজ করে।
postgresql-9.4.1209.jdbc42.jar
একটি 9.5
ডাটাবেস এবং ?currentSchema=myschema
সিনট্যাক্সের সাথে একসাথে কাজ করেছে ।
সংস্করণ 9.4 হিসাবে , আপনি currentSchema
আপনার সংযোগ স্ট্রিংয়ে প্যারামিটার ব্যবহার করতে পারেন ।
উদাহরণ স্বরূপ:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
যদি আপনার পরিবেশে এটি সম্ভব হয় তবে আপনি ব্যবহারকারীর ডিফল্ট স্কিমাটি আপনার কাঙ্ক্ষিত স্কিমাতে সেট করতে পারেন:
ALTER USER user_name SET search_path to 'schema'
আমি বিশ্বাস করি না যে সংযোগ স্ট্রিংয়ে স্কিমা নির্দিষ্ট করার একটি উপায় আছে। এটি আপনাকে কার্যকর করতে হবে বলে মনে হচ্ছে
set search_path to 'schema'
স্কিমা নির্দিষ্ট করার জন্য সংযোগ তৈরি করার পরে।
Statement statement = connection.createStatement(); try { statement.execute("set search_path to '" + schema + "'"); } finally { statement.close(); }
আমি কয়েক বছর আগে এটি সক্ষম করতে পোস্টগ্র্রেএসকিউএল জেডিবিসি ড্রাইভারের কাছে প্যাচের একটি আপডেট সংস্করণ জমা দিয়েছি। এটি ব্যবহারের জন্য আপনাকে উত্স থেকে পোস্ট্রেএসকিউএল জেডিবিসি ড্রাইভারটি তৈরি করতে হবে (প্যাচ যুক্ত করার পরে) এটি ব্যবহার করতে:
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
DataSource
- setCurrentSchema
কোনও DataSource
বাস্তবায়ন ইনস্ট্যান্ট করার সময়, বর্তমান / ডিফল্ট স্কিমা সেট করার জন্য কোনও পদ্ধতির সন্ধান করুন।
উদাহরণস্বরূপ, PGSimpleDataSource
ক্লাস কলে setCurrentSchema
।
org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource ( );
dataSource.setServerName ( "localhost" );
dataSource.setDatabaseName ( "your_db_here_" );
dataSource.setPortNumber ( 5432 );
dataSource.setUser ( "postgres" );
dataSource.setPassword ( "your_password_here" );
dataSource.setCurrentSchema ( "your_schema_name_here_" ); // <----------
আপনি যদি স্কিমাটিকে অনির্ধারিতভাবে ছেড়ে দেন public
তবে ডেটাবেসের মধ্যে থাকা কোনও স্কিমা পোস্টফ্রেস করে। ম্যানুয়ালটি দেখুন, বিভাগ 5.9.2 পাবলিক স্কিমা । টুপি ম্যানুয়াল উদ্ধৃতি:
পূর্ববর্তী বিভাগগুলিতে আমরা কোনও স্কিমা নাম উল্লেখ না করে সারণী তৈরি করেছি। ডিফল্টরূপে এই জাতীয় সারণী (এবং অন্যান্য অবজেক্ট) স্বয়ংক্রিয়ভাবে "পাবলিক" নামে একটি স্কিমে স্থাপন করা হয়। প্রতিটি নতুন ডাটাবেসে এমন স্কিমা থাকে।
search_path
SET SCHEMA 'myschema'
আপনি কোন পৃথক বিবৃতিতে ব্যবহার করতে পারেন তা ভুলে যাবেন না
SET SCHEMA 'মান' SET অনুসন্ধান_পথ TO মানের একটি উপনাম। এই সিনট্যাক্সটি ব্যবহার করে শুধুমাত্র একটি স্কিমা নির্দিষ্ট করা যেতে পারে।
এবং 9.4 এবং সম্ভবত জেডিবিসি ড্রাইভারের পূর্ববর্তী সংস্করণগুলি থেকে, setSchema(String schemaName)
পদ্ধতিটির জন্য সমর্থন রয়েছে ।
"Sql.DB" এর সাথে যান ( search_path
আন্ডারস্কোর সহ নোট করুন ):
postgres://user:password@host/dbname?sslmode=disable&search_path=schema
এটি ইতিমধ্যে উত্তর দেওয়া হয়েছিল:
JDBC: PostgreSQL: // স্থানীয় হোস্ট: 5432 / mydatabase currentSchema = myschema
পূর্ববর্তী উত্তরগুলির মতো, উপরের সংযোগের স্ট্রিংটি কেবল কাজ করে।
আমি পরীক্ষা করে দেখেছি এবং ঠিক আছে: https://youtu.be/m0lBUHSLkNM?t=79
(যদিও স্বীকৃত উত্তরটি 8 বছর আগে দেওয়া হয়েছিল, এটি 1 বছর আগে সম্পাদিত হয়েছিল।)