শ্রডিনগার্স মাইএসকিউএল টেবিল: বিদ্যমান, তবুও এটি নেই


118

আমি সব থেকে অদ্ভুত ত্রুটি করছি।

কখনও কখনও, টেবিলগুলি তৈরি বা পরিবর্তন করার সময়, আমি 'সারণী ইতিমধ্যে উপস্থিত রয়েছে' ত্রুটি পেয়েছি। তবে, ড্রপ টেবিল '# 1051 - অজানা সারণী' ফেরায়। সুতরাং আমি একটি টেবিল পেয়েছি যা আমি তৈরি করতে পারি না, ফেলে দিতে পারি না।

আমি যখন ডাটাবেসটি ফেলে দেওয়ার চেষ্টা করি তখন মাইএসকিএলড ক্র্যাশ হয়। কখনও কখনও এটি ভিন্ন নামের সাথে অন্য একটি ডিবি তৈরি করতে সহায়তা করে, কখনও কখনও তা হয় না।

আমি In 50 টেবিল সহ একটি ডিবি ব্যবহার করি, সমস্ত ইনোডিবি। এই সমস্যাটি বিভিন্ন টেবিলগুলির সাথে ঘটে।

আমি এটি উইন্ডোজ, ফেডোরা এবং উবুন্টু, মাইএসকিউএল 5.1 এবং 5.5 এ অনুভব করেছি। একই আচরণ, PDO, PHPMyAdmin বা কমান্ডলাইন ব্যবহার করার সময় using আমি আমার স্কিমা পরিচালনা করার জন্য মাইএসকিউএল ওয়ার্কবেঞ্চ ব্যবহার করি - আমি কিছু সম্পর্কিত ত্রুটি দেখেছি (শেষরেখাগুলি এবং স্টাফ) তবে সেগুলির কোনওটিই আমার পক্ষে প্রাসঙ্গিক নয়।

না, এটি কোনও দৃশ্য নয়, এটি একটি টেবিল। সমস্ত নাম ছোট হাতের অক্ষর।

আমি গুগল করতে পারে এমন সমস্ত কিছু চেষ্টা করেছিলাম - টেবিলগুলি ফ্লাশ করে, ডিবি থেকে ডিবিতে .frm ফাইলগুলি সরিয়ে, মাইএসকিএল লগ পড়ি, কিছুই না, পুরো জঘন্য জিনিসটিকে পুনরায় ইনস্টল করা ছাড়া আর কিছুই হয়নি।

'টেবিলগুলি দেখান' কিছুই প্রকাশ করে না, 'বর্ণনা করে' টেবিল বলে 'টেবিলের অস্তিত্ব নেই,' কোনও .frm ফাইল নেই, তবুও 'তৈরি টেবিল' এখনও একটি ত্রুটির সাথে শেষ হয় (এবং 'টেবিল তৈরি করে না থাকলে বিদ্যমান') এবং ডাটাবেস ফেলে দেওয়ার ফলে মাইএসকিএল ক্র্যাশ হয়ে গেছে

সম্পর্কিত, এখনও অসহায় প্রশ্ন:

সম্পাদনা:

mysql> use askyou;
Database changed

mysql> show tables;
Empty set (0.00 sec)

mysql> create table users_has_friends (id int primary key);
ERROR 1050 (42S01): Table '`askyou`.`users_has_friends`' already exists

mysql> drop table users_has_friends;
ERROR 1051 (42S02): Unknown table 'users_has_friends'

এবং এই জাতীয় সমস্ত একই: সারণী বিদ্যমান নেই, তবুও তৈরি করা যায় না;

mysql> drop database askyou;
ERROR 2013 (HY000): Lost connection to MySQL server during query

নাম পরিবর্তন হয়, এটি কেবলমাত্র টেবিল / ডাটাবেস নয় যা আমি সমস্যায় পড়েছি


2
আপনি যদি একটি মাইএসকিউএল ক্লায়েন্ট খুলতে পারেন, এবং টাইপ সমস্যা প্রদর্শক কিছু কমান্ড, তারপর কপি এবং একটি পেস্ট সঠিক এখানে কমান্ড এবং আউটপুট কপি। এটি দুর্দান্ত যে আপনি আপনার সমস্যাটি অনেকগুলি বিবরণে বর্ণনা করেছেন, তবে আপনি যদি সঠিক আদেশ এবং বার্তা পোস্ট করেন তবে তা আরও ভাল।
মার্ক বাইয়ার্স

যদি একই নামের কোনও স্পষ্টরূপে কোনও মতামত না থাকে তবে আমি মাইএসকিউএল এর ডেটা ফাইলের কাঠামোটি দুর্বল বলে দিতাম।
উদ্গমনীয়

3
আপনি প্রতিক্রিয়ায় কী পেতে পারি SHOW FULL TABLES IN askyouএবং SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA LIKE 'askyou'?
উদ্বিগ্ন

1
আপনি কি ইনোডাব_ফাইল_পিটার_ট্যাবল ব্যবহার করছেন?
ইএসজি

1
@ রাফেলবারোস: বেশ ঠিক আছে। টাইপো। স্পষ্ট করার জন্য ধন্যবাদ।
উদ্বিগ্ন

উত্তর:


19

আমি এই সমস্যাটি দেখেছি যখন ডেটা ডিরেক্টরিতে ডাটা ফাইলটি অনুপস্থিত থাকে তবে টেবিল সংজ্ঞা ফাইলটি উপস্থিত থাকে বা বিপরীতে। আপনি যদি ইনোডবি_ফিল_পিটার_সামগ্রী ব্যবহার করে থাকেন তবে প্রশ্নোক্ত .frmটেবিলের জন্য আপনার কাছে ফাইল এবং .ibd ফাইল উভয় আছে তা নিশ্চিত করতে ডেটা ডিরেক্টরিটি পরীক্ষা করুন । যদি MYISAM আছে, সেখানে একটি হওয়া উচিত .frm, .MYIএবং একটি.MYD ফাইল।

অনাথ ফাইলটি নিজে নিজে মুছে ফেলে সমস্যার সমাধান করা যেতে পারে।


3
আমি ব্যবহার করছি না innodb_file_per_table; তবে আমি যখন এটি চালু করি এবং টেবিলটি পুনরায় তৈরি করার চেষ্টা করি তখন এটি কেবল .ibdফাইলটি তৈরি করে । .frmকোথাও খুঁজে পাওয়া যায় না। এটি কেবলমাত্র একটি নির্দিষ্ট টেবিলের জন্য প্রযোজ্য (10+ জন সঠিক ফাইল সহ তৈরি হয়)। মুছে ফেলা হচ্ছে যে অনাথ IBD যাহাই হউক না কেন সাহায্যের কিছু না
Corkscreewe

1
আমি ইনোডাব_ফিল_পিটার_ টেবিল ব্যবহার করছি; তবে আমি যদি এতিম .frm মুছে ফেলি, তবে আমি তৈরি বিবৃতিটি চালানোর সময় এটি পুনরায় তৈরি করা হয়েছে (তবে তৈরি বিবৃতিটি ত্রুটি ফিরিয়ে দেয়, .ibd ফাইলটি তৈরি হয় না, এবং আমি এখনও এটিকে ফেলে দিতে পারি না)
অ্যান্ড্রু লরিয়ান

14

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

  1. সমস্ত স্কিমা মুছুন (মাইএসকিএল বাদে)
  2. ডাটাবেস বন্ধ
  3. আপনার ডেটা ডিরেক্টরিতে সমস্ত ফোল্ডার সঠিকভাবে সরানো হয়েছে তা নিশ্চিত করুন (আবার, মাইএসকিএল বাদে)
  4. আইবডাটা এবং লগ ফাইল মুছুন
  5. ডাটাবেস পুনরায় আরম্ভ করুন। এটি স্ক্র্যাচ থেকে টেবিল স্পেস এবং লগগুলি পুনরায় তৈরি করা উচিত।

2
কল্পনাপ্রসূত: মাইএসকিএল থামানো, 'আইবডাটা 1', 'আইব_লগফিল 1', 'আইব_লগফাইল0' মুছে ফেলা এবং মাইএসকিএল পুনরায় চালু করা আমার সমস্যার সমাধান করেছে। অনেক ধন্যবাদ!
মাইলো 21

4

ফিক্স সহজ হতে দেখা যাচ্ছে; কমপক্ষে আমি কী কাজ করেছিলাম, আমার পক্ষে কাজ করেছিল। অন্য মাইএসকিউএল ইনস্ট্যান্সে একটি টেবিল "zzz" তৈরি করুন, যেখানে zzz সমস্যা সারণীর নাম। (অর্থাত্ যদি টেবিলটিকে স্ক্রোডিংগার বলা হয় তবে জেড জেজি হুইভারের পরিবর্তে এর পরিবর্তে এটি লিখুন)) সারণির সংজ্ঞা কী তা বিবেচনাধীন নয়। এটি একটি অস্থায়ী ডামি; Zzz.frm ফাইলটি সার্ভারে থাকা ডাটাবেস ডিরেক্টরিতে অনুলিপি করুন যেখানে ফাইলটির মালিকানা এবং অনুমতিগুলি এখনও ফাইলটিতে সঠিক কিনা তা নিশ্চিত করে। মাইএসকিউএল এ আপনি এখন "টেবিলগুলি দেখান" করতে পারেন, এবং টেবিল জেডজেড থাকবে। mysql> ড্রপ টেবিল zzz; ... এখন কাজ করা উচিত। প্রয়োজনে ডিরেক্টরিতে যে কোনও zzz.MYD বা ZZZ.MYI ফাইল সাফ করুন।


আসলে এই সমাধানটি আমার জীবন বাঁচিয়েছে, আপনাকে ধন্যবাদ! আমি অন্য ডাটাবেস থেকে এফআরএম এবং আইডিবি ফাইলটি অনুলিপি করেছিলাম তবে একই সার্ভারে (একই মাইএসকিউএল সংস্করণ ইত্যাদি ...) এবং এটি দুর্দান্তভাবে কাজ করছে বলে মনে হচ্ছে।
পিয়েরে

আমি নিশ্চিত করি, .frmঅন্য উপায়টি (মাস্টার / স্লেভ) থেকে ফাইলটি অনুলিপি করার জন্য এবং এটি ডিরেক্টরিতে, ড্রপ টেবিলের মধ্যে রাখার উপায় এবং আপনি আবার টেবিলটি তৈরি করতে সক্ষম হবেন।
জুলিয়ানগনজালেজ

3

আমি সন্দেহ করি এটি এখানে প্রশ্ন মামলার প্রত্যক্ষ উত্তর, তবে আমি এই সঠিক অনুভূত সমস্যাটি কীভাবে সমাধান করেছি তা এখানে আমার ওএস এক্স লায়ন সিস্টেমে ।

আমি প্রায়শই নির্ধারিত কিছু বিশ্লেষণ কাজের জন্য টেবিলগুলি তৈরি / ড্রপ করি। কিছু সময়ে আমি টেবিলটি পাওয়া শুরু করেছি আমার স্ক্রিপ্টের মাধ্যমে অর্ধ-উপায়ে ত্রুটি রয়েছে। একটি সার্ভার পুনঃসূচনা সাধারণত সমস্যাটি সমাধান করে, তবে এটি একটি সমাধান থেকে খুব বিরক্তিকর ছিল।

তারপরে আমি লক্ষ্য করেছি যে স্থানীয় ত্রুটি লগ ফাইলটিতে এই নির্দিষ্ট লাইনটি রয়েছে:

[Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive

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

এটি সম্ভবত আমার ক্ষেত্রে কিছু ভুল কনফিগারেশনের ফলাফল, তবে আশাকরি এই ত্রুটিযুক্ত কেস সমাধান সন্ধানের জন্য কাউকে কম সময় অপচয় করতে সহায়তা করবে।


3

এটি একটি পুরানো প্রশ্ন তবে আমি কেবল একই সমস্যাটিকে আঘাত করেছি এবং শীর্ষে লিঙ্কযুক্ত সম্পর্কিত সমস্যার মধ্যে একটি উত্তর ছিল যা আমার প্রয়োজন ছিল এবং ফাইল, টেবিলগুলি মুছে ফেলা, সার্ভারটি শাট ডাউন করা ইত্যাদির চেয়ে কম কঠোর stic

mysqladmin -uxxxxxx -pyyyyy flush-tables

1

আমার ক্ষেত্রে, অ্যাপ্লিকেশনটি চালানো ব্যবহারকারীর কাছে মাইএসকিএল ডেটা ডিরেক্টরির মালিকানা পরিবর্তন করে সমস্যার সমাধান হয়েছিল। (আমার ক্ষেত্রে এটি জেটি অ্যাপ্লিকেশনটি জেটি ওয়েবসার্ভারে চালিত ছিল))

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


1

যদি এই ত্রুটিটি 1051 এর সাথে স্টক থাকে এবং আপনি কেবল ডাটাবেসটি মুছতে চান এবং এটি আবার আমদানি করতে চান এই পদক্ষেপগুলি করুন এবং সব ঠিক হয়ে যাবে ...

ইউনিক্সের মূল হিসাবে মূল হিসাবে :

  • rm -rf / var / lib / mysql / YOUR_DATABASE;
  • বিকল্প -> মাইএসকিএল_আপগ্রেড - ফোর্স
  • mysqlcheck -UUSER -PPASS আপনার_ডাটাবেস
  • mysqladmin -uUSER -pPASS ড্রপ আপনার_ড্যাটাবেস
  • mysqladmin -uUSER -pPASS টি আপনার তৈরি করুন_ড্যাটাবেস
  • mysql -uUSER -pPASS YOUR_DATABASE <IMPORT_FILE

শুভেচ্ছা, ক্রিস্টাস


0

আমার এই সমস্যা ছিল এবং আমি আশা করি যে আইবিডি ফাইলটি মুছে ফেলা উপরোক্ত পোস্ট হিসাবে সহায়তা করবে তবে এতে কোনও পার্থক্য হয়নি। মাইএসকিউএল কেবলমাত্র একটি নতুন আইবিডি ফাইল পুনরায় তৈরি করেছে। আমার ক্ষেত্রে একই মাইএসকিউএল ইভেন্টে অন্যান্য ডেটাবেজে আসলে একই ধরণের টেবিল রয়েছে। যেহেতু এফআরএম ফাইলটি অনুপস্থিত ছিল, তাই আমি অন্য ডাটাবেসে অনুরূপ টেবিল থেকে এফআরএম ফাইলটি অনুলিপি করেছি, মাইএসকিউএল পুনরায় চালু করেছি এবং টেবিলটি সঠিকভাবে কাজ করেছে।


0

আমি একটি ত্রুটি তৈরি করার পরে এটি মুছে ফেলার পরে আমি এই ত্রুটির দিকে দৌড়লাম, তারপরে আবার এটি তৈরি করতে চেয়েছিলাম। আমার ক্ষেত্রে, আমার একটি স্ব-অন্তর্ভুক্ত ডাম্প ফাইল ছিল তাই আমি আমার স্কিমা বাদ দিয়েছি, এটি পুনরায় তৈরি করেছি এবং ডাম্প ফাইলটি ব্যবহার করে টেবিল এবং ডেটা আমদানি করেছি।


0

এটি আমাদের সাইটে ঘটে (তবে খুব কমই) সাধারণত যখন নির্দিষ্ট স্ক্রিপ্টগুলি চালানোর সময় একটি "ইভেন্ট" ঘটে যা প্রচুর পুনর্নির্মাণ করে। ইভেন্টগুলি নেটওয়ার্ক আউটেজ বা পাওয়ার সমস্যার অন্তর্ভুক্ত।
আমি খুব বিরল অনুষ্ঠানে এর জন্য যা করি তা ঘটে - আমি ভারী হাতের পদ্ধতিকে ব্যবহার করি:

  • আমার কেবল নির্দিষ্ট টেবিলটি থেকে মুক্তি এবং পুনর্নির্মাণের দরকার ছিল। আমি সাধারণত এমন অবস্থায় থাকি যেহেতু টেবিলটি তৈরি হচ্ছে তাই এটি ঠিক আছে। (আপনার যদি তথ্য পুনরুদ্ধারের প্রয়োজন হয় তবে আপনার পরিস্থিতি আলাদা হতে পারে)
  • অ্যাডমিন হিসাবে, মাইএসকিএল ইনস্টলেশনে যান (উইন্ডোতে এটি হতে পারে "... প্রোগ্রাম ফাইল / মাইএসকিএল / মাইএসকিউএল সার্ভার xx / ডেটা / <scmaname>
  • <scmaname> ফোল্ডারে টেবিলের নামযুক্ত আপত্তিকর ফাইলটি সন্ধান করুন - এবং এটি মুছুন।
  • অনাথ অস্থায়ী ফাইলগুলির জন্য পরীক্ষা করুন এবং সেগুলিও মুছুন। # ... ফাইলগুলি যদি সেগুলিতে হয় তবে।
  • মাইএসকিউএল আপনাকে আবার সারণী তৈরি করতে দেবে

দীর্ঘদিন (বছর) ধরে বেশ কয়েকটি বিভিন্ন ডাটাবেসে আমার এই সমস্যাটি হয়েছিল। এটি একটি হোঁচট খাওয়া কারণ বিরোধী বার্তা। অন্যান্য উত্তরগুলিতে বর্ণিত হিসাবে আমি মুছে ফেলা / পুনর্নির্মাণ / পুনরায় নামকরণ / ডেটাবেজ পরিবর্তনের জন্য বিভিন্ন পরিবর্তন করেছি এবং জিনিসগুলি চালিয়ে যেতে পরিচালিত করেছি, তবে অবশ্যই এটি আরও বেশি সময় নেয়। আমার জন্য ভাগ্যবান হ'ল রেফারেন্স টেবিলগুলির ক্ষেত্রে এটি সর্বদা ঘটেছিল - সাধারণত সকালে ilt কদাচিৎ সমস্যাটি পেয়েছে তবে এটি একটি বিশেষ উদ্বেগজনক মামলা হিসাবে স্বীকৃতি পেয়েছে। (আমি পুনঃস্থাপন করব: আপনার যদি পুনরুদ্ধার করার প্রয়োজন হয় তবে অন্যান্য সমাধানগুলির দিকে নজর দিন))

  • এটি অন্য ব্যবহারকারীর, বা অন্য ডেটাবেজে থাকা কোনও টেবিল নয়
  • এটি আপার / লোয়ার কেস ইস্যু নয়, আমি সমস্ত লোয়ার-কেস ব্যবহার করি তবে এটি ছিল একটি আকর্ষণীয় বিষয়!
  • "এটি অবশ্যই ছিল <সেখানে / সেখানে নেই / কিছু-অন্য-ব্যবহারকারী-সারণী-কেস>> এর প্রকরণের প্রতিক্রিয়া দেখে অতিরিক্ত অতিরিক্ত হতাশাগ্রস্থ হয়েছিল এবং আপনি ঠিক এটি করছেন না" :)
  • টেবিলটি "প্রদর্শন টেবিলগুলিতে" প্রদর্শিত হয়নি
  • টেবিলটি ছিল (সর্বদা ছিল / ছিল) একটি INNODB টেবিল।
  • টেবিলটি ড্রপ করার চেষ্টা করে ত্রুটি বার্তাটি দিয়েছে যে টেবিলটি বিদ্যমান নেই।
  • তবে টেবিলটি তৈরি করার চেষ্টা করে ত্রুটি বার্তাটি দিয়েছে যে টেবিলটি ইতিমধ্যে বিদ্যমান।
  • mysql 5.0 বা 5.1 ব্যবহার করে
  • মেরামত এই সমস্যার জন্য অকার্যকর

-1

একটি বিশেষ টেবিল নিয়ে আমার এই সমস্যা ছিল। সম্ভাব্য সমাধানগুলি পড়া যা আমি কয়েকটি পদক্ষেপ দিয়েছি:

  • এতিম ফাইলগুলি অনুসন্ধান করুন: কারও অস্তিত্ব নেই;
  • এক্সিকিউট:: show full tables in database;সমস্যাযুক্তটি দেখেনি;
  • এক্সিকিউট:: describe table;ফেরত table doesn't exist;
  • এক্সিকিউট:: SELECT * FROM information_schema.TABLES WHERE TABLE_NAME='table';ফেরত Empty set;
  • উপরে phpMyAdmin দ্বারা ম্যানুয়ালি অনুসন্ধান করুন: কোয়েরিটি উপস্থিত ছিল না;

এবং, এই পদক্ষেপগুলির পরে, আমি আবার show tables;... এবং ভার্চুয়াল! সমস্যাযুক্ত টেবিলটি চলে গেল। আমি এটি তৈরি করতে এবং কোনও সমস্যা ছাড়াই একই সমস্যাযুক্ত নাম দিয়ে ফেলে দিতে পারি এবং আমার এমনকি সার্ভারটি পুনরায় আরম্ভ করার দরকার নেই! অদ্ভুত ...

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