পড়া-লেখার জন্য এসকিউএল ডাটাবেস মোড পরিবর্তন করুন


108

আমি কীভাবে কোনও এসকিউএলাইট ডাটাবেসকে পঠনযোগ্য থেকে পঠন-পাঠাতে পরিবর্তন করতে পারি?

আমি আপডেট বিবৃতি কার্যকর করার সময়, আমি সর্বদা পেয়েছিলাম:

এসকিউএল ত্রুটি: একটি পঠনযোগ্য ডেটাবেস লেখার চেষ্টা

এসকিউএল ফাইলটি ফাইল সিস্টেমে একটি লিখনযোগ্য ফাইল।


4
Sqlite3 চলমান ব্যবহারকারীর (বা আপনি কোয়েরিটি কার্যকর করতে যা কিছু ব্যবহার করছেন) ডিবিতে লেখার অনুমতি রয়েছে? আপনি কি ফাইলের মালিকানা দ্বিগুণ চেক করেছেন?
টিম পোস্ট

4
আমি নিশ্চিত যে এটি করার অনুমতি তাদের রয়েছে।
ব্যবহারকারী 143482

4
আমি এটি একটি ওয়েব অ্যাপ্লিকেশনটিতে দেখেছি যেখানে আমি ডাটাবেস ফাইলে জিআইডি সেট করতে ভুলে গিয়েছিলাম এবং "www-ডেটা" অ্যাকাউন্টে (যে অ্যাপাচি এর অধীনে চলে) ফাইলটিতে লেখার অ্যাক্সেস প্রত্যাখ্যান করা হয়েছিল।
ফিনউউ

উত্তর:


92

এই ত্রুটি বার্তার জন্য বিভিন্ন কারণ থাকতে পারে:

  • বেশ কয়েকটি প্রক্রিয়ার একই সাথে ডাটাবেস খোলা থাকে ( এফএকিউ দেখুন )।

  • সংযুক্ত করতে এবং ডাটাবেসটি এনক্রিপ্ট করার জন্য একটি প্লাগইন রয়েছে। এটি ডিবি সংশোধন করার অনুমতি দেয় না।

  • শেষ অবধি, অন্য একটি FAQ বলছে: "নিশ্চিত করুন যে ডাটাবেস ফাইল যুক্ত ডিরেক্টরিটি সিজিআই স্ক্রিপ্টটি সম্পাদনকারী ব্যবহারকারীর কাছেও লেখার যোগ্য।" আমি মনে করি কারণ এটি ইঞ্জিনকে ডিরেক্টরিতে আরও ফাইল তৈরি করা দরকার।

  • পুরো ফাইল সিস্টেমটি কেবল পঠিত হতে পারে, উদাহরণস্বরূপ ক্রাশের পরে।

  • ইউনিক্স সিস্টেমে অন্য একটি প্রক্রিয়া পুরো ফাইলটি প্রতিস্থাপন করতে পারে।


30
আমি আমার বিডটি তৃতীয় বুলেটে রেখেছি - ডিবি ফাইলযুক্ত ডিরেক্টরিটিও লিখনযোগ্য হওয়া উচিত যাতে লক ফাইলটি তৈরি করা যায়।
কিমভাইস

4
আমার জন্য প্রথম বুলেট: ডি
বিনয়

4
সর্বশেষ. আমি সর্বদা সুডোকে ভুলে যাই: পি
ঝড়

4
আমি এই তালিকায় যুক্ত করতে পারি: ব্যবহারের সময় ডাটাবেস ফাইলটি প্রতিস্থাপন করা হয়েছিল। আমি এই উপসংহারের দিকে নিয়ে যাওয়া মূ .়তার বিবরণ না দেওয়ার পছন্দ করি।
উইম রিজেন্ডার্স

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

10

/ ডিবি ডির সমস্ত ফাইলে আমার কাছে রুট থেকে আমার কাছে পরিবর্তন করে এটি সমাধান করেছি।

কেবলমাত্র ls -lসেই ফোল্ডারেই করুন, যদি কোনও ফাইলার মালিকানাধীন থাকে rootতবে তা আপনার কাছে পরিবর্তন করুন:sudo chown user file


6

এই ত্রুটিটি সাধারণত ঘটে যখন আপনার ডাটাবেসটি ইতিমধ্যে একটি অ্যাপ্লিকেশন দ্বারা অ্যাক্সেস করা হয় এবং আপনি অন্য অ্যাপ্লিকেশন দিয়ে এটি অ্যাক্সেস করার চেষ্টা করছেন।


আপনি কেন অন্য একটি ডাটাবেস থেকে একটি ডাটাবেস অ্যাক্সেস করার চেষ্টা করবেন?
পিটার মর্টেনসেন

আমি মনে করি তিনি অন্য একটি অ্যাপ্লিকেশন থেকে বুঝিয়েছিলেন
অ্যামৌরিমার্টিনি

5

(এই ত্রুটি বার্তাটি সাধারণত বিভ্রান্তিমূলক হয় এবং এটি সাধারণত একটি সাধারণ অনুমতি ত্রুটি)

উইন্ডোজ এ

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

4
প্রশাসক হিসাবে আমাকে "ডিবি ব্রাউজার" চালাতে হয়েছিল।
ইবেন রেক্স

4
আমি উইন্ডোজ 10 এ "প্রত্যেককে" "সম্পূর্ণ নিয়ন্ত্রণ" দিয়েছি এবং এটি এখনও কার্যকর হবে না। যাইহোক, @ ইবেনরউক্স যেমন বলেছে, আপনাকে প্রশাসক হিসাবে "ডিবি ব্রাউজার" চালানোর প্রয়োজন হতে পারে, এটি আমার পক্ষে কাজ করে।
পিসআউটসাইড

4

অ্যান্ড্রয়েড ব্যবহার করা হলে।

নিশ্চিত করুন যে আপনি আপনার লেখার অনুমতি যোগ করেছেন EXTERNAL_STORAGEআপনার টু AndroidManifest.xml

AndroidManifest.xmlআপনার <application>ট্যাগের উপরে এবং বাইরে এই ফাইলটিতে এই লাইনটি যুক্ত করুন ।

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

এটি আপনার অ্যাপ্লিকেশনটিকে এসডিকার্ডে লেখার অনুমতি দেবে। EXTERNAL_STORAGEআপনি ডিভাইসটিতে আপনার ডাটাবেসটি যেখানে সংরক্ষণ করেছেন এটি সেখানে থাকলে এটি সহায়তা করবে ।


এটি আমার সমস্যার সমাধান করেছে। আমি আরও বিশদ দিতে এবং পড়তে সহজ হতে প্রশ্নটি পরিবর্তন করেছি।
prolink007

অনেক ধন্যবাদ. এটি আমার সমস্যাও সমাধান করেছে। একের জন্য ভোট দিন :)
আলতাফ সামি

4

লিনাক্স কমান্ড শেল-এ, আমি করেছি:

chmod 777 <db_folder>

যেখানে ডাটাবেস ফাইল রয়েছে।

এটা কাজ করে। এখন আমি আমার ডাটাবেস অ্যাক্সেস করতে এবং সন্ধান সন্নিবেশ করতে পারি।


সুরক্ষা জড়িত কি কি?
পিটার মর্টেনসেন


4
এটি দ্রুত সমাধান হিসাবে কাজ করে তবে পরে আরও নিরাপদ সুরক্ষিত সমাধানের জন্য এটি খনন করা দরকার
ট্রয়এডো 42

4
এটি সমস্ত ব্যবহারকারীর জন্য সমস্ত অনুমতি প্রদান করবে, যা সম্ভবত কোনও সুরক্ষা দৃষ্টিকোণ থেকে আপনি চান না।
রেনেল চেসাক

2

আমারও আজ এই সমস্যা ছিল।

এটি উইন্ডোজ মোবাইলের অ্যাক্টিভ সিঙ্কের কারণে হয়েছিল - আমি যে ফোল্ডারে কাজ করছিলাম তা সিঙ্ক হয়েছিল যাতে এএস প্রক্রিয়া সময়ে সময়ে এই ত্রুটির কারণ হয়ে ডিবি ফাইলটি ধরেছিল।


2

ব্যক্তিগত অভিজ্ঞতা ভাগ করে নেওয়ার জন্য আমি এই ত্রুটির সাথে মুখোমুখি হয়েছি যা শেষ পর্যন্ত উভয়কেই ঠিক করে দেয়। অগত্যা আপনার সমস্যার সাথে সম্পর্কিত হতে পারে তবে এই ত্রুটিটি এতই জেনেরিক যে এটি গাজিলিয়ন জিনিসের জন্য দায়ী করা যেতে পারে appears

  1. ডেটাবেস উদাহরণ অন্য অ্যাপ্লিকেশন খোলা। আমার ডিবি "লকড" অবস্থায় রয়েছে বলে মনে হয়েছিল তাই এটি কেবল পঠন মোডে রূপান্তরিত হয়। আমি ডিবি ভাগ করে নেওয়ার জন্য অ্যাপ্লিকেশনটির ২ য় উদাহরণ বন্ধ করে এটি ট্র্যাক করতে সক্ষম হয়েছি।

  2. ডিরেক্টরি গাছের অনুমতি - দয়া করে নিশ্চিত হয়ে নিন যে ব্যবহারকারীর অ্যাকাউন্টের কেবল ফাইল পর্যায়ে নয়, পুরো আপার ডিরেক্টরি স্তরে / স্তরে সমস্তভাবে অনুমতি রয়েছে।

ধন্যবাদ


1

লিনাক্সে, ডাটাবেস ফাইলযুক্ত পুরো ফোল্ডারে পড়ার / লেখার অনুমতি দিন।

এছাড়াও, সেলইনাক্স লিখনটি ব্লক করছে। আপনাকে সঠিক অনুমতিগুলি সেট করতে হবে।

আমার সেলিনাক্স ম্যানেজমেন্ট জিইউআইতে (ফেডোরা ১৯-তে), আমি httpd_unified (সমস্ত সামগ্রী ফাইলের HTTPD হ্যান্ডলিংকে একীভূত করা) লেবেলযুক্ত বক্সটিতে চেক করেছিলাম এবং আমি যেতে পেরেছিলাম।


কার জন্য পড়া / লেখার অনুমতি?
পিটার মর্টেনসেন

কীভাবে এটি চেক করে সেট করবেন?
SynCap

1

উইন্ডোজে:

tl; dr: ফাইলটি আবার খোলার চেষ্টা করুন।

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

আমরা শেষ পর্যন্ত আবিষ্কার করেছি যে থ্রেডগুলি ব্যর্থ হচ্ছিল কেবল সেগুলি যা অন্য থ্রেডটি বন্ধ করে দেওয়ার সাথে সাথেই 3 টি ডাটাবেস খোলার চেষ্টা করেছিল (3 এমএসের মধ্যে)। আমরা অনুমান করেছিলাম যে সমস্যাটি উইন্ডোজ (বা উইন্ডোজের অধীনে স্ক্লাইট প্রয়োগ) ফাইলটি বন্ধ হওয়ার সাথে সাথে ফাইল সংস্থানগুলি তত্ক্ষণাত পরিষ্কার করে না। আমরা খোলার পরে ডিবির বিরুদ্ধে একটি পরীক্ষা লেখার ক্যোয়ারী চালিয়ে এটি পেয়েছি (উদাহরণস্বরূপ, একটি নির্বোধ নাম দিয়ে একটি টেবিল বাদ দিয়ে তৈরি করা)। যদি তৈরি / ড্রপ ব্যর্থ হয়, আমরা ৫০ এমএস অপেক্ষা করে আবার চেষ্টা করেছি, আমরা সফল না হওয়া পর্যন্ত বা 5 সেকেন্ড না পেরিয়ে পুনরাবৃত্তি করেছি।

এটা কাজ করেছে; স্পষ্টতই কেবলমাত্র সংস্থানগুলিকে ডিস্কে প্রবাহিত করার জন্য পর্যাপ্ত সময় দরকার ছিল।


1

উবুন্টুতে, মালিককে অ্যাপাচি গ্রুপে পরিবর্তন করুন এবং সঠিক অনুমতি দিন (না, এটি 777 নয়):

sudo chgrp www-data <path to db.sqlite3>
sudo chmod 664 <path to db.sqlite3>

হালনাগাদ

আপনি গ্রুপ এবং ব্যবহারকারীর জন্যও অনুমতি নির্ধারণ করতে পারেন ।

sudo chown www-data:www-data <path to db.sqlite3>

4
আপনি কেবল গোষ্ঠী পরিবর্তন করেছেন , ব্যবহারকারী নয় (যা ভাল, এবং সম্ভবত ব্যবহারকারী পরিবর্তনের চেয়ে ভাল তবে আপনার উত্তরটি বিভ্রান্তিকর)।
অস্পেক্স

আপনি কী ভাবেন যে ফাইলটি অ্যাপাচি ব্যবহারকারী / গোষ্ঠীর অন্তর্ভুক্ত হওয়া উচিত?
মার্ফি

0

কমান্ড লাইন থেকে, যেখানে আপনার ডাটাবেস ফাইলটি রয়েছে সেই ফোল্ডারটি প্রবেশ করুন এবং নিম্নলিখিত কমান্ডটি কার্যকর করুন:

chmod 777 databasefilename

এটি সমস্ত ব্যবহারকারীর জন্য সমস্ত অনুমতি প্রদান করবে।


24
যা বেশ খারাপ।
মার্কো কেরউইটজ

4
নিখুঁত উত্তর !
জিতেশ প্রজাপতি

4
এটি এই সমস্যাটি সমাধান করতে পারে তবে এটি প্রস্তাবিত নয় কারণ এটি সুরক্ষার সমস্যার কারণ হতে পারে।
কাঠির রাজা 18'19

0

ডিবি সম্পাদনা করুন: আমি ডিবি সম্পাদনা করতে সমস্যা হচ্ছিলাম। আমি শেষ না করে
'নন রুট ইউজারনেম' ts3server.sqlitedb
যতক্ষণ না এটি রুট ছিল না, ফাইলটি সম্পাদনা করতে পারতাম। ব্যবহারকারীর নাম হল আমার অ মূল অ্যাকাউন্টের ব্যবহারকারীর নাম।

টিমস্পেককে অটো স্টার্ট করুন: আপনার নন রুট অ্যাকাউন্ট হিসাবে ক্রন্টব
-e
@reboot / ts3server / ওরফে / home/ts3server/ts3server_startscript.sh এর পথে


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