ত্রুটির কারণ: অবৈধ (পুরানো?) সারণী বা ডাটাবেসের নাম 'হারিয়ে যাওয়া + পাওয়া গেছে'


8

আমার মাইএসকিউএল লগ সদৃশ ত্রুটি দেখায়:

141223  5:47:21 [ERROR] Invalid (old?) table or database name 'lost+found'

আমার নামের একটি ডাটাবেস আছে #mysql50#lost+foundতবে আমি এটি মুছে ফেলতে পারি না।

mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| maindatabas         |
| maindatabas_help    |
| maindatabas_tracker |
| gitlabhq_production |
| locations           |
| #mysql50#lost+found |
| mysql               |
| osticket            |
| performance_schema  |
+---------------------+
10 rows in set (0.00 sec)

mysql> DROP DATABASE `#mysql50#lost+found`;
ERROR 1008 (HY000): Can't drop database '#mysql50#lost+found'; database doesn't exist
mysql>

আমি সার্ভার সংস্করণটি পরিচালনা করছি: 5.5.40 সেন্টোস 6 এ আইইউএস সম্প্রদায় প্রকল্প দ্বারা বিতরণ করা হয়েছে।

প্রতি মাইএসকিউএল CentOS 6x (5x নয়) এ খুব ধীরগতিতে চলছে , আমার ড্যাটাডির বাধা = 0 বিকল্পের সাথে ext3 এ রয়েছে।

কী কারণে এই ত্রুটি ঘটছে, এবং কীভাবে এটি নির্মূল করা যায়?

উত্তর:


14

আপনার datadirনিজের ফাইল ফাইলের মতো দেখতে এটি দেখতে আমার কাছে লাগে ।

Ext ফাইল সিস্টেম, ইউনিক্স অধীনে বেশীরভাগ FSes মত, তাদের রুট একটি ডিরেক্টরি নামক আছে lost+found। অসামঞ্জস্যপূর্ণ ফাইল সিস্টেমটি fscked করা হলে (যেমন, https: //unix.stackex بدل.com/ প্রশ্নগুলি / 18154 / আরও তথ্যের জন্য -হারানোফাউন্ড-ফোল্ডার-ইন-লিনাক্স-এবং-ইউনিক্স-এর-উদ্দেশ্য-কী । দুর্যোগ-পুনরুদ্ধারে এই উদ্দেশ্যটি গুরুত্বপূর্ণ, সুতরাং আপনার ডিরেক্টরি মুছে ফেলা উচিত নয়।

আপনার সমস্যা দেখা দেয় যখন মাউন্ট পয়েন্ট, যে ফাইল ডিরেক্টরিটিতে সেই ডিরেক্টরি থাকা মাউন্ট পয়েন্টটি সম্পূর্ণভাবে একটি অ্যাপ্লিকেশনকে দেওয়া হয় যা মাউন্ট পয়েন্টের সমস্ত কিছু তার সাথে সম্পর্কিত বলে আশা করে। মাইএসকিউএল এইরকম একটি হওয়ায় এটি lost+foundডিরেক্টরিটিকে ডিবি-সম্পর্কিত কিছু বলে ব্যাখ্যা করার চেষ্টা করে এবং (অযৌক্তিকভাবে নয়) ব্যর্থ হয়।

আপনার সেরা বাজি কখনই কোনও অ্যাপ্লিকেশনটিতে সম্পূর্ণ এফএস উত্সর্গ করা হয় না, তবে কিছু অ্যাপ্লিকেশন-নির্দিষ্ট-নির্দিষ্ট মাউন্ট পয়েন্টে এফএস মাউন্ট করার পরিবর্তে, এর /data1অধীন একটি উপ-ডিরেক্টরি তৈরি করা হয়, উদাহরণস্বরূপ /data1/mysql, এবং অ্যাপ্লিকেশনটিকে ডিরেক্টরিটি এটির মতো ব্যবহার করতে পুনরায় কনফিগার করা যায় datadir।


12

ম্যাডহ্যাটার ত্রুটিটি ভালভাবে ব্যাখ্যা করেছিলেন। তবে তখন থেকে সময়গুলি পরিবর্তিত হয়েছে এবং এখন মাইএসকিউএল ( 5.6.3 সাল থেকে ) এই ডিরেক্টরিটিকে উপেক্ষা করার বিকল্প রয়েছে। আপনার /etc/mysql/my.cnfফাইলে এই বিবৃতিটি কেবল যুক্ত করুন:

ignore-db-dir=lost+found

মাইএসকিউএল পুনরায় চালু হওয়ার পরে আপনি এটি কমান্ড দিয়ে পরীক্ষা করতে পারেন:

show global variables like 'ignore_db_dirs';

আপনি যদি একাধিক ডিরেক্টরি উপেক্ষা করতে চান তবে আপনার প্রতিটিটির জন্য আলাদাভাবে বিকল্প নির্দিষ্ট করা দরকার specify

সূত্র: http://www.chriscalender.com/ignoring-the-lostfound-directory-in-your-datadir/


3

আপনি যদি মারিয়াডিবি ব্যবহার করে থাকেন তবে CentOS 7.2 এর অধীনে my.cnf এর অবস্থান

/etc/my.cnf

আপনি পরিষেবাটি পুনরায় আরম্ভ করতে পারেন

systemctl restart mariadb.service

উপেক্ষা-ডিবি-ডিরকে [মাইএসকিএলডি] বিভাগের অধীনে রাখা উচিত, [মাইসকিএলডি_সেফ] একের অধীনে নয়।

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

ignore-db-dir=lost+found

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

1

আমাদের মাইএসকিউএল যেমন এখনও বুঝতে পারে না ignore_db_dirs, তেমনি করেছি

# chmod 0 lost+found

যা (এই) সমস্যার সমাধান করেছে।


0

মারিয়াডবি উপেক্ষা করা হয়_ডিবি_ডিয়ারগুলি মাইএসকিউএল উপেক্ষা করা হয়_ডিবি_ডির - "এস" ছাড়াই

Https://mariadb.com/kb/en/library/server-system-variables/#ignore_db_dirs দেখুন

আমি নীচের মত একটি গোপন ডিরেক্টরি ছিল

mysql50 # .local

সুতরাং ইত্যাদি / my.cnf --- মারিয়াডিবির জন্য এটি ছিল

[মাইএসকিএলডি] উপেক্ষা_ডিবি_ডিয়ার্স = লোকাল

এবং ডাটাবেস সার্ভারটি পুনরায় আরম্ভ করুন - তারপরে দেখুন ডাটাবেসটি আর শো ডেটাবেস কমান্ডে নেই বা মারিয়াডিবি-র সাথে কমান্ড লাইন থেকে একটি "মাইএসকিএলশো" রয়েছে check

তারপরে আপনি ডিরেক্টরিটি / var / lib / mysql এর নীচে থাকা সমস্ত কিছু মুছে ফেলতে পারেন, তারপরে /etc/my.cnf ফাইলটি পুনরায় সম্পাদনা করুন এবং কমান্ডটি মন্তব্য করুন বা মুছে ফেলুন, এবং সার্ভারটি পুনরায় আরম্ভ করুন - সমস্যাটি স্থির হয়েছে

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

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