মাইএসকিউএল ত্রুটি কোড: মাইএসকিউএল ওয়ার্কবেঞ্চে আপডেটের সময় 1175


816

আমি কলামটি visitedএটির মান দেওয়ার জন্য আপডেট করার চেষ্টা করছি I আমি মাইএসকিউএল ওয়ার্কবেঞ্চ ব্যবহার করি, এবং আমি ওয়ার্কবেঞ্চের ভিতরে থেকে এসকিউএল সম্পাদকটিতে বিবৃতি লিখছি। আমি নিম্নলিখিত আদেশটি লিখছি:

UPDATE tablename SET columnname=1;

এটি আমাকে নিম্নলিখিত ত্রুটি দেয়:

আপনি নিরাপদ আপডেট মোড ব্যবহার করছেন এবং আপনি কোনও KEY কলাম ব্যবহার না করে এমন একটি টেবিল আপডেট করার চেষ্টা করেছেন নিরাপদ মোড অক্ষম করতে, বিকল্পটি টগল করুন ....

আমি নির্দেশাবলী অনুসরণ, এবং আমি অবারিত safe updateথেকে বিকল্প Editমেনু তারপর Preferencesতারপর SQL Editor। একই ত্রুটিটি এখনও উপস্থিত রয়েছে এবং আমি এই মানটি আপডেট করতে পারছি না। দয়া করে বলুন ভুল কি?


4
আপনি কি জানেন যে এটি আপনার টেবিলের সমস্ত সারি আপডেট করবে যেখানে পরিদর্শন করা = 0 দেখার জন্য = 0 হয়েছে? এই কমান্ডের সাহায্যে আপনি চান কি?
মার্ক বাইয়ার্স

23
"নিরাপদ আপডেটগুলি" আনচেক করার পরে নীচের পদক্ষেপটি অনুসরণ করুন: অনুসন্ধান -> সার্ভারে পুনরায় সংযোগ করুন nect এখন আপনার জিজ্ঞাসাটি কার্যকর করুন
রিপন আল ওয়াসিম

5
এই পরিবর্তনটি প্রভাবিত হওয়ার আগে আপনাকে অবশ্যই মাইএসকিউএল সার্ভারের সাথে পুনঃসংযোগ করতে হবে (মাইএসকিউএল সংযোগটি পুনরায় চালু করুন)।
ফিলিপ ওলসন

উত্তর:


1611

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

চেষ্টা করুন:

SET SQL_SAFE_UPDATES = 0;

অথবা আপনি আপনার প্রশ্নের সাথে শাসন (ব্যবহার অনুসরণ করতে পরিবর্তন করতে পারেন primary keyমধ্যে where clause)।


আমি উল্লেখ করেছি যে আমি জিইউআই থেকে নিরাপদ আপডেট বিকল্পটি ইতিমধ্যে অক্ষম করেছি যা আমি কমান্ডটি টাইপের আইডির মতোই প্রভাব ফেলে। তবে, আপনার উত্তরের জন্য ধন্যবাদ, তবে আমি ইতিমধ্যে আমার প্রশ্নের উত্তর দিয়েছি। সমস্যাটি কী ছিল তা জানতে আমার উত্তরটি পরীক্ষা করুন।
জুরি এ

8
আপনি একবার জিইউআইতে বিকল্পটি পরিবর্তন করার পরে, সেটিংসটি সঠিকভাবে সেট করার জন্য আপনাকে ডাটাবেসের সাথে পুনরায় সংযোগ স্থাপন করতে হবে।
টিম কোসিয়েলস্কি

31
আপনার SET SQL_SAFE_UPDATES = 1কাজটি শেষ হওয়ার পরে এটি আবার সেট করতে ভুলবেন না , কারণ এটি একটি উপযুক্ত সুরক্ষা বৈশিষ্ট্য।
স্টকবি

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

3
আমি কেবল বলে এসেছি যে আমি গত 6 মাসে 20 বারের মতো এই পোস্টটি অনুসন্ধান করেছি কারণ 11 বছর ধরে আমার কাছে এই বিকল্পটি সর্বদা ভ্রান্ত ছিল, তবে এখন আমি এই সংস্থার সাথে একটি বিকাশ ও উত্পাদন নিয়ে কাজ করছি true এটি ডিফল্টরূপে 0 তে সেট করার অনেকগুলি কারণ রয়েছে, উদাহরণস্বরূপ আপনি যখন সিএসভিতে সরাসরি রফতানি করতে চান এমন একক বৈশিষ্ট্যগুলি বিকাশ করেন এবং তারপরে এটিকে রফতানি বা অনুরূপ কিছু হিসাবে চিহ্নিত করুন। অন্যান্য সময় এটি বৈশ্বিক আপডেটগুলির কারণে বিরক্তিকর হয় যার স্পষ্টত কোনও পিকে ফিল্টার নেই। আমি এটিকে বাস্তব দরকারী বৈশিষ্ট্যের চেয়ে নুব-সুরক্ষা হিসাবে দেখছি।
জোয়েলবনেটআর

454

আপডেটের আদেশটি কার্যকর করার আগে নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন: মাইএসকিউএল ওয়ার্কবেঞ্চে

  1. Edit-> এ যানPreferences
  2. "SQL Editor"ট্যাব এবং uncheck"নিরাপদ আপডেটগুলি" ক্লিক করুনcheck box
  3. Query-> Reconnect to Server // লগআউট এবং তারপরে লগইন করুন
  4. এখন আপনার এসকিউএল কোয়েরি কার্যকর করুন

পিএস, মাইএসকিউএল ডেমন পুনরায় চালু করার দরকার নেই!


20
সংস্করণে .3.৩ পদক্ষেপের "Sql Editor"পরিবর্তে দ্বিতীয়টি হওয়া উচিত "Sql Queries"এবং তারপরে নীচে একটি চেক বাক্স থাকবে"Safe Updates"
meconroy

1
যদি এটি এক সময়ের জিনিস হয় তবে আমি আপনাকে এটি আবার চালু করার পরামর্শ দিচ্ছি কারণ এটি যত্নবান না হলে আপনার ডেটা রয়্যাললি ম্যাকআপ করা খুব সহজ করে তোলে
ফ্রাঙ্কেন্মিন্ট

2
ধন্যবাদ সন্তুষ্ট কিছুক্ষণের জন্য আমি সেই বাক্সটি দেখতে পেলাম না। আমাকে কেবল উইন্ডোটি বড় করতে হয়েছিল।
আরন-আরন

হতে পারে তারা এটিকে সরিয়ে নিয়েছে, তবে মাইএসকিউএল ওয়ার্কবেঞ্চ
in.০-তে এটি

1
হ্যাঁ এখানে একই, এটি দেখতে কিছুটা নীচে স্ক্রোল করতে হয়েছিল।
ইলন জিতো

167
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;

4
দুর্ভাগ্যক্রমে অন্যান্য ক্যোয়ারী-ভিত্তিক সমাধানগুলি আমার পক্ষে কার্যকর হয়নি। কিন্তু এই এক! নিরাপদ আপডেটগুলি আবার চালু করতে আপনি একটি লাইন যুক্ত করেছেন বলে আমি প্রশংসা করি।
শেরিলহোমান

1
সুরক্ষিত থাকার সময়েও এটি সম্ভবত সবচেয়ে সাধারণ হিসাবে আমি এটি পছন্দ করি।
Na 14

117

এসকিউএলরিওউরিপিউপিডিএটিএস 0 তে সেট করার দরকার নেই , আমি সত্যিই এটিকে সেভাবে করতে নিরুৎসাহিত করব। SAFE_UPDATES একটি REASON এর জন্য ডিফল্টরূপে। সুরক্ষা বেল্ট এবং অন্য জিনিসগুলি ছাড়াই আপনি গাড়ি চালনা করতে পারেন যদি আপনি জানেন তবে আমার কী বোঝা যায়;) কেবল যেখানে ক্লিয়ার একটি মূল কী-এর সাথে যোগ করুন যা প্রাথমিক-কী এর সাথে 0 এর সাথে তুলনা করে, তাই লেখার পরিবর্তে:

UPDATE customers SET countryCode = 'USA'
    WHERE country = 'USA';               -- which gives the error, you just write:

UPDATE customers SET countryCode = 'USA'
    WHERE (country = 'USA' AND customerNumber <> 0); -- Because customerNumber is a primary key you got no error 1175 any more.

এখন আপনি আশ্বাস দিতে পারেন যে প্রতিটি রেকর্ড (সর্বদা) আপনার প্রত্যাশা অনুসারে আপডেট হয়েছে।


3
এই প্রতিভা!
আমোস লং

প্রশংসা করা উত্তর: +1
আসিফ রাজা

2
হাহাহা, এটি একটি ভাল কৌশল। আমি WHERE id > 0এই লাইন বরাবর একটি কৌশল হিসাবে ব্যবহৃত ।
সিএসবা তোথ

এটি আমার পক্ষে কাজ করে না, এটি আমাকে একই বার্তা দেখাচ্ছে। আমি এটির মাধ্যমে নিরাপদ আপডেট মোডটি নিষ্ক্রিয় করে সমাধান করেছি: - সম্পাদনা -> পছন্দসমূহ -> এসকিউএল সম্পাদক তারপর নিরাপদ আপডেটটি চেক করুন।
আবদেলহাদি লাহলু

2
যদিও এটি কীভাবে এটি কোনও নিরাপদ করে তুলছে?
ম্যাট মেসারস্মিথ

106

যা প্রয়োজন তা হ'ল: একটি নতুন ক্যোয়ারী শুরু করুন এবং চালান:

SET SQL_SAFE_UPDATES = 0;

তারপরে: আপনি যে ক্যোয়ারী চালানোর চেষ্টা করছেন তা চালনা করুন যা আগে কাজ করে নি।


7
এসও-তে আপনাকে স্বাগতম, ট্যুর পৃষ্ঠা এবং সহায়তা পৃষ্ঠাটি পড়তে ভুলবেন না এবং এই জাতীয় উত্তরগুলি এড়িয়ে চলুন কারণ এর নীচে থাকা অনেক উত্তরই একই কথা বলে এবং কয়েক মাস আগে পোস্ট করা হয়েছে
WOUNDEDStevenJones

1
আপনি কোয়েরি চালানোর পরে এই বিকল্পটি আবার সক্ষম করতে পারেন।
কেটা

এই উত্তরটি কী যুক্ত করে? আপনি সবেমাত্র একই জিনিসটি হাবিবিল্লাহ হিসাবে পোস্ট করেছেন, দু'বছরেরও বেশি পরে। কর্মফল কাটার চেষ্টা করছেন?
লুক 13


66

ত্রুটি কোড: 1175. আপনি নিরাপদ আপডেট মোড ব্যবহার করছেন এবং আপনি কেই কলাম ব্যবহার করে এমন কোনও সারণী আপডেট করার চেষ্টা করেছিলেন নিরাপদ মোড অক্ষম করতে, পছন্দসমূহ -> এসকিউএল সম্পাদকটিতে বিকল্পটি টগল করুন এবং পুনরায় সংযোগ করুন।

"নিরাপদ আপডেট মোড" অস্থায়ীভাবে বন্ধ করুন

SET SQL_SAFE_UPDATES = 0;
UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net';
SET SQL_SAFE_UPDATES = 1;

চিরতরে "নিরাপদ আপডেট মোড" বন্ধ করুন

মাইএসকিএল ওয়ার্কবেঞ্চ ৮.০:

MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates"

এখানে চিত্র বর্ণনা লিখুন পুরানো সংস্করণটি করতে পারে:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]

41
  1. অভিরুচিসমূহ ...
  2. "নিরাপদ আপডেট" ...
  3. সার্ভার পুনরায় চালু করুন

অভিরুচিসমূহ ...

নিরাপদ আপডেট সার্ভার পুনরায় চালু করুন


এটি গ্রহণযোগ্য উত্তর হওয়া উচিত ছিল it এটি একটি
আফসোস

1
আপনাকে সার্ভার পুনরায় চালু করতে হবে না। সংযোগটি বন্ধ এবং পুনরায় খোলার জন্য এটি পর্যাপ্ত হওয়া উচিত।
মার্ক এল।

1
ম্যাক-এ, পছন্দগুলি মাইএসকিউএল ওয়ার্কব্যাঞ্চ শীর্ষ মেনু এর অধীনে।
zwitterion

36
SET SQL_SAFE_UPDATES=0;

অথবা

যাও Edit --> Preferences

SQL Queriesট্যাবে ক্লিক করুন এবং চেক বাক্সটি আনচেক করুনSafe Updates

Query --> Reconnect to Server

এখন আপনার বর্গ কোয়েরি কার্যকর করুন


26

আপনি যদি কোনও নিরাপদ মোডে থাকেন তবে আপনাকে যেখানে আইটেমের ধারা সরবরাহ করতে হবে। সুতরাং এই জাতীয় কিছু কাজ করা উচিত!

UPDATE tablename SET columnname=1 where id>0

1
এই পৃষ্ঠাটি এই সত্যটি নিশ্চিত করে: bennadel.com/blog/…
ডিভডিফ

20

ওয়ার্কবেঞ্চে আমি নিরাপদ আপডেট মোডটি নিষ্ক্রিয় করে সমাধান করেছি:

- সম্পাদনা -> পছন্দসমূহ -> এসকিএল সম্পাদক তখন নিরাপদ আপডেটটি চেক করুন।


7
এটি কাজ করে তবে, আমাকে মাইএসকিউএল ওয়ার্কবেঞ্চ পুনরায় চালু করতে হয়েছিল।
ল্যানিল ম্যারাসিংহে

17

আমি উত্তর খুঁজে পেয়েছি। সমস্যাটি হ'ল আমাকে স্কিমার নাম সহ টেবিলের নামটি আগে রাখতে হবে। অর্থাত্ আদেশটি হ'ল:

UPDATE schemaname.tablename SET columnname=1;

সবাইকে ধন্যবাদ.


5
বাম প্যানেলে স্কিমা নির্বাচন করে আপনি স্কিমা নাম উল্লেখ করা এড়াতে পারেন। বাম প্যানেলে স্কিমা নির্বাচন করার অর্থ আপনি নির্বাচিত স্কিমা / ডাটাবেস ব্যবহার করছেন
রিপন আল ওয়াসিম

10
এই প্রশ্নের (এবং শিরোনাম) বর্ণিত সমস্যা সমাধানের উত্তর নয়। আপনি গ্রহণযোগ্য হিসাবে অন্য চিহ্নিত করা উচিত।
T30

আমি স্কিমেনেম দিয়ে চেষ্টা করেছি তবে একই ত্রুটি qms-active-dbপেয়েছি। আপডেট করুন .ঘ_ত্যাবলী সেট বুকমার্ক = '1660_207100000001000'
কোড_মোড

3
এই উত্তর না!
এজেকিয়েল ভিক্টর

1
ভুল উত্তর, সঠিক উত্তরের উত্তর হাবিবিল্লাহ (নীচে) দিয়েছেন
এস

14

মাইএসকিউএল ওয়ার্কবেক সংস্করণে 6.2 পছন্দ SQLQueriesবিকল্পগুলি থেকে বেরিয়ে আসবে না ।

এক্ষেত্রে এটি সম্ভাব্য ব্যবহার: SET SQL_SAFE_UPDATES=0;


1
এটি বিদ্যমান, তবে বিকল্পটি এখন "এসকিউএল সম্পাদক" এর অধীনে।
ফিলিপ ওলসন

আমি এই বিকল্পটি দেখতে পাচ্ছি না। আপনি একটি স্ক্রিনশট পেতে পারেন দয়া করে। ধন্যবাদ
ফেরদিয়াডো

ওপেন পছন্দসমূহ -> এসকিউএল সম্পাদক ট্যাব -> নীচে। একটি 6.2-বিটা প্রকাশের এই বিকল্পটির অভাব রয়েছে, সুতরাং সম্ভবত আপনার 6.2.3+ এ আপগ্রেড করতে হবে।
ফিলিপ ওলসন

আমার সংস্করণটি 6.3, এটির অধীনে -> এসকিউএল সম্পাদক -> অন্যান্য
টিয়ান

12

সর্বাধিক সমাধান হ'ল সারি সীমাটি নির্ধারণ করা এবং সম্পাদন করা। এটি সুরক্ষা উদ্দেশ্যে করা হয়।


2
এই সমাধানে +1। টেবিল থেকে মুছুন যেখানে কলাম = 'xyz' সীমা 9999999999
ফ্লাইংজেব্রা 1

2
এই উত্তরটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি সর্বনিম্ন নিরাপদ উপায়।
জুলিয়ান

7

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

আমি একজন ভাল নাগরিক হওয়ার চেষ্টা করেছি এবং আইডির একটি টেম্প টেবিল ব্যবহার করার জন্য ক্যোয়ারীটি সংশোধন করেছি যা আপডেট হবে:

create temporary table ids ( id int )
    select id from prime_table where condition = true;
update prime_table set field1 = '' where id in (select id from ids);

ব্যর্থতা. আপডেটটি এতে পরিবর্তিত হয়েছে:

update prime_table set field1 = '' where id <> 0 and id in (select id from ids);

কাজ করেছে। ওয়েল গলি - যদি আমি সর্বদা নিরাপদ আপডেট চেক পেতে <> 0 টি যেখানে যোগ করে থাকি বা এসকিউএলফেয়ারস @UPDATE = 0 সেট করে থাকি তবে আমার জিজ্ঞাসায় আমি 'চেক' হারিয়েছি। আমি পাশাপাশি কেবল স্থায়ীভাবে বিকল্পটি বন্ধ করে দিতে পারি। আমি মনে করি এটি একটির পরিবর্তে একটি দুটি পদক্ষেপ প্রক্রিয়া মুছে ফেলা এবং আপডেট করে তোলে .. তবে আপনি যদি যথেষ্ট দ্রুত টাইপ করেন এবং কীটি বিশেষ হওয়ার কথা চিন্তা না করে বরং কেবল একটি উপদ্রব হিসাবে ..


4

সত্য, এটি বেশিরভাগ উদাহরণের জন্য অর্থহীন। তবে অবশেষে, আমি নীচের বিবৃতিতে এসেছি এবং এটি দুর্দান্ত কাজ করে:

update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');

3

এটি ম্যাকের জন্য, তবে পছন্দগুলির অবস্থান ব্যতীত অন্যান্য ওএসের ক্ষেত্রে অবশ্যই একই হতে হবে।

আমরা যখন কোনও অনিরাপদ DELETEঅপারেশন চেষ্টা করি তখন আমাদের ত্রুটি ঘটে

আপনি যখন এই ত্রুটিটি পান তখন পছন্দগুলিতে ক্লিক করুন

নতুন উইন্ডোতে, বিকল্পটি আনচেক করুন Safe updates

নিরাপদ আপডেটগুলি চেক করুন

তারপরে সংযোগটি বন্ধ করে আবার খুলুন। পরিষেবাটি আরম্ভ করার দরকার নেই।

এখন আমরা DELETEসফল ফলাফল দিয়ে আবার চেষ্টা করতে যাচ্ছি ।

এখানে চিত্র বর্ণনা লিখুন

সুতরাং এই নিরাপদ আপডেট সম্পর্কে সব কি? এটি কোনও খারাপ জিনিস নয়। এটি সম্পর্কে মাইএসকিএল বলছে।

--safe-updatesঅপশনটি ব্যবহার করে

নতুনদের জন্য, একটি দরকারী স্টার্টআপ বিকল্পটি --safe-updates(বা --i-am-a-dummy, যার একই প্রভাব রয়েছে)। এটি ক্ষেত্রে কার্যকর হয় যখন আপনি হয়ত DELETE FROM tbl_nameবিবৃতি জারি করেছিলেন তবে WHEREধারাটি ভুলে গেছেন । সাধারণত, এই জাতীয় বিবৃতি সারণী থেকে সমস্ত সারি মুছে ফেলা হয়। এর মাধ্যমে --safe-updates, আপনি কেবল চিহ্নিত মানগুলি নির্দিষ্ট করে সারিগুলি মুছতে পারেন। এটি দুর্ঘটনা রোধে সহায়তা করে।

আপনি যখন --safe-updatesবিকল্পটি ব্যবহার করেন , যখন মাইএসকিউএল মাইএসকিউএল সার্ভারের সাথে সংযোগ করে তখন নিম্নলিখিত বিবৃতিটি জারি করে:

SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;

আপনি উত্পাদন ডেটাবেস ব্যবহার করার সময় এই বিকল্পটি চালু করা নিরাপদ। অন্যথায়, দুর্ঘটনাক্রমে গুরুত্বপূর্ণ ডেটা মুছে না ফেলতে আপনাকে অবশ্যই খুব যত্নবান হতে হবে।

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