মঙ্গোএরর: এই মোংগোডিবি স্থাপনার পুনরায় চেষ্টাযোগ্য লেখাকে সমর্থন করে না। দয়া করে আপনার সংযোগের স্ট্রিতে retryWrites = মিথ্যা যুক্ত করুন


10

আমি "mongoose": "^5.7.1"আমার নোড.জেএস প্রকল্পে ব্যবহার করছি । আমি একটি এপিআই তৈরি করছি যা দুটি ডকুমেন্টে আপডেট হওয়া জড়িত। সুতরাং, আমি লেনদেনগুলি নিম্নলিখিতগুলির মতো ব্যবহার করছি:

// Start the transaction
session = await mongoose.startSession()
session.startTransaction()

await Promise.all([
   <1st update operation>,
   <2nd update operation>
])

// Commit the transaction
session.commitTransaction()

আমি যখন আমার স্থানীয় পরিবেশে এই এপিটি আঘাত করি তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

মঙ্গোএরর: এই মোংগোডিবি স্থাপনার পুনরায় চেষ্টাযোগ্য লেখাকে সমর্থন করে না। দয়া করে আপনার সংযোগের স্ট্রিতে retryWrites = মিথ্যা যুক্ত করুন।

আমি যখন এই এপিটিকে দূরবর্তী পরিবেশে আঘাত করি তখন এটি ঠিকঠাক হয়। আমি https://www.clever-cloud.com ডাটাবেস ক্লাউড এবং এপিডব্লিউএসকে এপিআই মেঘ হিসাবে ব্যবহার করছি ।

ত্রুটি বার্তায় লেখা হিসাবে, আমি চেষ্টা করার চেষ্টা করেছি retryWrites=false

  • সংযোগের স্ট্রিংয়ের শেষে যা আমি মঙ্গুজে যাচ্ছি mongodb://${ip}:${port}/${this.MONGO_DATABASE}?retryWrites=false
  • পদ্ধতিতে retryWrites: falseপাস হিসাবে বিকল্প সহ mongoose.connect
mongoose.connect(`mongodb://${ip}:${port}/${this.MONGO_DATABASE}`, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
    retryWrites: false
  }, (err) => {...})

উপরের কেউই বিষয়টি সমাধান করেনি।

নীচে mongo --versionকমান্ডের আউটপুট দেওয়া হল :

db version v4.0.13
git version: bda366f0b0e432ca143bc41da54d8732bd8d03c0
allocator: system
modules: none
build environment:
    distarch: x86_64
    target_arch: x86_64

আমি ডিবাগ করেছি এবং এই ত্রুটিটি ফেলে দেওয়ার পিছনে আসল ত্রুটিটি হ'ল:

মঙ্গোএরর: লেনদেনের নম্বরগুলি কেবল একটি প্রতিলিপি সেট সদস্য বা মঙ্গোগুলিতে অনুমোদিত

কিছু প্রস্তাব দিন।


আমি এই ত্রুটিগুলি দেখতেও শুরু করেছিলাম। আমি হেরোকুতে ম্ল্যাব ব্যবহার করছি। তবে ক্লায়েন্টটিতে বিকল্প যুক্ত করা এটি সমাধান করেছে। আমি কেবল ইউআরআই সংস্করণ চেষ্টা করেছি এবং এটি কাজ করে। স্ট্রেঞ্জ।
মিগ 6

আমি একটি স্বতন্ত্র সার্ভার ব্যবহার করছি এবং এটি এই ত্রুটি ঘটাচ্ছে। প্রাথমিক ত্রুটি প্রকৃত ছিল না এবং পরবর্তীটির প্রতিরূপ-সেট বা ভাগ করা ক্লাস্টারগুলির সাথে সমাধান করা যেতে পারে। Npmjs.com/package/run-rs
Andro বিকাশকারী

উত্তর:


2

লেনদেন নিঃসন্দেহে মোংগোডিবি ৪.০-এ সবচেয়ে আকর্ষণীয় নতুন বৈশিষ্ট্য। তবে দুর্ভাগ্যক্রমে, মোংগোডিবি ইনস্টল এবং চালনার জন্য বেশিরভাগ সরঞ্জাম একটি প্রতিরূপ সেটের বিপরীতে স্ট্যান্ডেলোন সার্ভার শুরু করে। আপনি যদি স্বতন্ত্র সার্ভারে একটি সেশন শুরু করার চেষ্টা করেন তবে আপনি এই ত্রুটিটি পেয়ে যাবেন।

আপনার স্থানীয় পরিবেশে প্রতিলিপি-সেট ব্যবহার করে এই সমস্যাটি সমাধান করা যেতে পারে ।

আমি এই উদ্দেশ্যে রান-আরএস ব্যবহার করেছি।


2

গৃহীত উত্তরের পরামর্শ অনুসারে, আপনার নিজের স্থানীয় সার্ভারটি স্ট্যান্ডেলোন সার্ভারের বিপরীতে লেনদেন করতে সক্ষম হতে একটি প্রতিরূপ সেট হিসাবে চালানো দরকার।

তবে প্রস্তাবিত সমাধানটি ছাড়াও, আপনি মংডোডিবি ডকুমেন্টেশনের নির্দেশাবলীর নীচে সংক্ষিপ্তসার হিসাবে, কোনও তৃতীয় পক্ষের সরঞ্জাম ব্যবহার না করে সহজেই আপনার স্ট্যান্ডলোন স্থানীয় ডিবিকে প্রতিরূপ সেটে রূপান্তর করতে পারবেন :

  1. আপনার স্বতন্ত্র মঙ্গোদ উদাহরণটি বন্ধ করুন এবং replSetযুক্তি দিয়ে এটি পুনরায় চালু করুন ।
mongod --port 27017 --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost
  1. mongoশেল দিয়ে আপনার দৃষ্টান্তের সাথে সংযুক্ত করুন এবং নতুন প্রতিরূপ সেট শুরু করুন।
rs.initiate()

এখন আপনার স্ট্যান্ডলোন মঙ্গোডব সার্ভারের পরিবর্তে একটি প্রতিলিপি সেট থাকা উচিত, যেখানে আপনি একাধিক নথিগুলি একবারে আপডেট করার জন্য আপনার স্থানীয় পরিবেশে লেনদেন করতে পারেন!

replSetপ্রতিবার আপনি সার্ভারটি শুরু করতে চাইলে যুক্তিটি অন্তর্ভুক্ত করতে ভুলবেন না , অন্যথায় এটি স্ট্যান্ডেলোন হিসাবে শুরু করা হবে। এটিকে আবার চালানোর জন্য আমি প্রথম পদক্ষেপের মতো একই কমান্ডটি ব্যবহার করি।


বিকল্পভাবে, আপনি মোংগোডিবি ডকুমেন্টেশনে এই অন্যান্য নির্দেশাবলী অনুসরণ করে পরিবেশ পরীক্ষা করার জন্য স্ক্র্যাচ থেকে একটি নতুন প্রতিলিপি সেট স্থাপন করতে পারেন


0

দয়া করে App/Config/databaseফাইল 'retryWrites'=>falseমোংডব সংযোগ স্ট্রিং এডিট করুন

মঙ্গো ডিবি সংযোগ লিখুন

'mongodb' => [
            'driver'   => 'mongodb',
            'host'     => env('MONGO_DB_HOST', 'lo*****'),
            'port'     => *****,
            'database' => env('MONGO_DB_DATABASE'),
            'username' => env('MONGO_DB_USERNAME'),
            'password' => env('MONGO_DB_PASSWORD'),
            'options'  => [
                'database'=> env('MONGO_DB_DATABASE'),
                'retryWrites'=>false
            ]
        ],

সেভ এবং রান করুন


0

&retryWrites=falseআপনার সংযোগ স্ট্রিং যোগ করার চেষ্টা করুন

-

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

-

এটি আমাদের হোস্ট করা মঙ্গো সাইট (এমএলএবি) বলেছিল:

সম্ভবত আপনার অ্যাপের ড্রাইভারটিকে আরও সাম্প্রতিক সংস্করণে আপডেট করা হয়েছে যা কেবল ওয়্যার্ডটাইগার-কেবল বৈশিষ্ট্যটি ব্যবহার করার চেষ্টা করছে। ত্রুটির উল্লেখ হিসাবে, আপনাকে আপনার সংযোগের স্ট্রিংয়ের সাথে পুনরায় চেষ্টা করুন & পুনরায় চেষ্টা করুন।

https://docs.mlab.com/faq/#why-am-i-getting-the-transaction-numbers-are-only-allowed-on-storage-engines-that-support-document-level-locking-error

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