প্রশ্ন `mysql_upgrade` দেওয়া কোনও বাস্তব কারণে ব্যর্থ হয়


আমি মাইএসকিউএল 5.1 থেকে 5.5 এ আপগ্রেড করছি, চলমান mysql_upgrade এবং এই আউটপুট পেয়েছি:

# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

কোন ঘটনা ঘটছে তা দেখার জন্য কোন ধারনা (অথবা, ঘটছে না?) তাই আমি যা ভুল এবং আসলে চালাতে পারি ঠিক করতে পারি mysql_upgrade?

ধন্যবাদ!

আরো আউটপুট:

# mysql_upgrade --verbose
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

# mysql_upgrade --debug-check --debug-info
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

# mysql_upgrade --debug-info
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

User time 0.00, System time 0.00
Maximum resident set size 1260, Integral resident set size 0
Non-physical pagefaults 447, Physical pagefaults 0, Swaps 0
Blocks in 0 out 16, Messages in 0 out 0, Signals 0
Voluntary context switches 9, Involuntary context switches 5

# mysql_upgrade --debug-check
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

বন্ধ করার পর mysqld --skip-grant-tables মাধ্যমে mysqladmin shutdown এবং মাধ্যমে MySQL পুনরায় আরম্ভ করা service mysql start, ত্রুটির লগ ত্রুটিগুলির এই সেটের মাধ্যমে ওভার ওভার loops:

130730 21:03:27 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
130730 21:03:27 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130730 21:03:27 InnoDB: The InnoDB memory heap is disabled
130730 21:03:27 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130730 21:03:27 InnoDB: Compressed tables use zlib 1.2.3.4
130730 21:03:27 InnoDB: Initializing buffer pool, size = 20.0G
130730 21:03:29 InnoDB: Completed initialization of buffer pool
130730 21:03:30 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 588190222435
130730 21:03:30  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 588192055067
130730 21:03:30  InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
InnoDB: Apply batch completed
InnoDB: Last MySQL binlog file position 0 81298895, file name /var/log/mysql/mysql-bin.006008
130730 21:03:33  InnoDB: Waiting for the background threads to start
130730 21:03:34 InnoDB: 5.5.32 started; log sequence number 588192055067
130730 21:03:34 [Note] Recovering after a crash using /var/log/mysql/mysql-bin
130730 21:03:34 [Note] Starting crash recovery...
130730 21:03:34 [Note] Crash recovery finished.
130730 21:03:34 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130730 21:03:34 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130730 21:03:34 [Note] Server socket created on IP: '0.0.0.0'.
130730 21:03:34 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

মাধ্যমে শুরু সময় MySQL লগ mysqld_safe --skip-grant-tables

130730 21:19:36 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130730 21:19:36 [Note] Plugin 'FEDERATED' is disabled.
130730 21:19:36 InnoDB: The InnoDB memory heap is disabled
130730 21:19:36 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130730 21:19:36 InnoDB: Compressed tables use zlib 1.2.3.4
130730 21:19:37 InnoDB: Initializing buffer pool, size = 20.0G
130730 21:19:39 InnoDB: Completed initialization of buffer pool
130730 21:19:39 InnoDB: highest supported file format is Barracuda.
130730 21:19:42  InnoDB: Warning: allocated tablespace 566, old maximum was 0
130730 21:19:42  InnoDB: Waiting for the background threads to start
130730 21:19:43 InnoDB: 5.5.32 started; log sequence number 588192055067
130730 21:19:43 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130730 21:19:43 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130730 21:19:43 [Note] Server socket created on IP: '0.0.0.0'.
130730 21:19:43 [Warning] Can't open and lock time zone table: Table 'mysql.time_zone_leap_second' doesn't exist trying to live without them
130730 21:19:43 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_history_long' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_consumers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_instruments' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_timers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'performance_timers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'threads' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_thread_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_instance' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_global_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_summary_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_summary_by_instance' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'mutex_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'rwlock_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'cond_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_instances' has the wrong structure
130730 21:19:43 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.32-0ubuntu0.12.04.1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

আমি এটা বুঝতে পেরেছি, সমস্ত টেবিল গঠন / অস্তিত্বের সমস্যা (যেমন এটি MySQL সিস্টেম টেবিলের সাথে সম্পর্কিত) চালানোর মাধ্যমে সংশোধন করা উচিত mysql_upgrade :


68
2017-07-30 20:21


উত্স


এছাড়াও সম্ভবত কিছুই মূল্য, mysqld চলছে, সঙ্গে --skip-grant-tables বিকল্প। আমি মাধ্যমে সংযোগ করতে পারেন mysql কোন শংসাপত্রের সাথে টার্মিনালে, এবং আমি syslog এর মাধ্যমে কোনও ত্রুটি পাই না অথবা অন্য যে কোন জায়গায় আমি যখন রান করি তখন আমি মনে করতে পারি mysql_upgrade - Jim Rubenstein
দ্য MySQL রেফারেন্স ম্যানুয়াল 5.1 ভাল ভাল 5.5 থেকে 5.5 আপগ্রেড কভার। আপনি এখানে সব নির্দেশাবলী অনুসরণ করেছেন, এটা উল্লেখযোগ্য হবে। যদি আপনি না, ভাল ... - Aaron Copley
যদি আপনার MySQL রুট ব্যবহারকারীর পাসওয়ার্ড না থাকে তবে `mysql_upgrade -u root -p` তে` -p` অন্তর্ভুক্ত করবেন না। - Jeferex


উত্তর:


আমি মনে করি এটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন

mysql_upgrade -u root -p

আমি তাদের পাস না হলে আমি আপনার ত্রুটি পেতে

সম্পাদন করা: মন্তব্যের জন্য ধন্যবাদ এখন আমি জানি যে অন্যান্য কারণ রয়েছে, হয়তো কম ঘন ঘন কিন্তু তাদেরও সচেতন হওয়া ভাল

সুতরাং যখন আপনি যে ত্রুটি পেতে

  • আপনি ব্যবহারকারীর নাম এবং পাসওয়ার্ড পাস করেনি
  • আপনি আপনার প্রমাণপত্রাদি পাস, কিন্তু তারা ভুল ছিল
  • MySQL সার্ভার চলমান হয় না
  • অনুমতিগুলির টেবিলগুলি ধ্বংস হয়ে গেছে (তারপরে আপনাকে অবশ্যই মাইএসকিউএল পুনরায় চালু করতে হবে mysqld --skip-grant-table)
  • টেবিল mysql.plugin অনুপস্থিত (আপনি MySQL শুরু করার সময় এটি সম্পর্কে একটি ত্রুটি দেখবেন যা চালানোর জন্য প্রস্তাব করে ... mysql_upgrade, এবং এটি ব্যর্থ হয়। আপনি সম্ভবত আমার.cnf তে কিছু অপ্রচলিত কনফিগারেশন আছে)

93
2017-08-14 10:01



এটি ঠিক আমার সমস্যা ছিল - কেন এটি কেবল "প্রমাণীকরণ করতে পারে না" বা "সংযোগ ত্রুটি" বা কিছু বলতে পারেনি? তাই রাগ ... - les2
বন্ধুরা, আপনার পাসওয়ার্ডটিও ভুল হলে একই ত্রুটি পাবেন। তাই অবগত করা। - Yoosaf Abdulla
এবং যদি সার্ভারটি চলছে না তবে আপনি একই ত্রুটি পাবেন, যদিও এটি পাসওয়ার্ড স্বীকার করে বলে মনে হচ্ছে। - Raman
ডাটাবেস টেবিল বা ডাটাবেস ফরম্যাটটি খুব ভেঙ্গে গেলেও এটি কাজ করে না, তারপরে আপনাকে "mysqld --skip-grant-tables" দিয়ে ডেমনটি চালু করতে হবে এবং অন্য টার্মিনালে mysql_upgrade চালাতে হবে! - Henning
এই জন্য +1। এখনো আরেকটি কারণে আমি MySQL ঘৃণা করি - Excalibur


5.5 থেকে 5.6 পর্যন্ত আপগ্রেড করার সময় আমি এই সুনির্দিষ্ট উপসর্গগুলির মুখোমুখি হয়েছিলাম এবং এটি একটি পরিষেবা নাগালের সমস্যা হিসাবে পরিণত হয়েছিল।

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


9
2017-08-19 19:33



যে আমার সমস্যা ছিল কারণ আমি এই মত mysqd চালানো: mysqld --skip-grant-tables -user = mysql - Rodo


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

mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`

9
2017-10-09 08:56



এটি আমার জন্য পুরোপুরি কাজ করেন - Carlos Alberto Martínez Gadea


একই সমস্যা! আমার জন্য সমাধান থেকে এসেছিলেন http://www.freebsd.org/cgi/query-pr.cgi?pr=180624

সংক্ষেপে: ত্রুটি বিভ্রান্তিকর! চালান mysql_upgrade -u root -p ডিবি অন লাইন এবং রুট পাসওয়ার্ড প্রদান করে।


5
2017-11-30 10:23





আপনি কোথায় ব্যর্থ হবেন তা দেখতে একের পর এক চেষ্টা করতে পারেন:

mysql_upgrade টেবিলগুলি পরীক্ষা এবং মেরামত এবং সিস্টেম সারণি আপগ্রেড করার জন্য নিম্নলিখিত কমান্ডগুলি চালায়:

mysqlcheck --all-databases --check-upgrade --auto-repair  
mysql < fix_priv_tables  
mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table-names

থেকে http://dev.mysql.com/doc/refman/5.5/en/mysql-upgrade.html


4
2017-07-30 21:10



যে সম্পর্কে চিন্তা, কিন্তু fix_priv_tables একটি স্ক্রিপ্ট যে দ্বারা উত্পন্ন হয় mysql_upgrade privelege টেবিল স্থির করার জন্য - Jim Rubenstein
ভাল পয়েন্ট, হয়তো শুধু প্রথম mysqlcheck লাইন চেষ্টা? এবং সরাসরি বিন ফোল্ডার থেকে চলমান চেষ্টা করুন, fwiw, /usr/bin/mysql_upgrade - user16081-JoeT


এই প্রশ্ন অবিশ্বাস্যভাবে জেনেরিক, এবং আমি যে জন্য ক্ষমাপ্রার্থী।

আমি আমার সমস্যাটির সরাসরি কারণ এবং সমাধান খুঁজে পাইনি, তাই আমি মাইএসকিউএল পুনরায় ইন্সটল করার চেষ্টা করে দেখি এটি কাজ করবে কিনা। সক্রিয় আউট, পুনরায় ইনস্টল কৌশল ছিল। এটা ঠিক করার জন্য একটি পঙ্গু উপায় ছিল, কিন্তু আমি এটি ছেড়ে ছিল একমাত্র বিকল্প ছিল।

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


3
2017-11-30 14:00



হ্যাঁ একবার মাইএসকিউএলের ডেটা ডিআইআর দূষিত হয়ে গেলে আপনি যা করতে পারেন তা অনেক বেশি - Krauser


আপনি MySQL তথ্য অধীনে সব ফাইল অনুমতি পরীক্ষা করা আবশ্যক। এটি MySQL PID (MySQL বা _mysql) এর একই মালিক হওয়া উচিত। যথাযথ অনুমতি ছাড়া ফাইল থেকে তথ্য পুনরুদ্ধার কারণ এই sometime ঘটে। উদাহরণস্বরূপ, যদি আপনার MySQL তথ্য / var / lib / mysql এর অধীনে থাকে

chown -R mysql /var/lib/mysql

2
2017-11-07 00:12





আমাদের DBA শুধুমাত্র 5.5.39 আপগ্রেড করার পরিবর্তে MySQL সংস্করণ 5.0.95 আনইনস্টল করে। আনইনস্টল ব্যাক আপ /etc/my.cnf থেকে /etc/my.cnf.rpmsave তারপর এটি মুছে ফেলা হয়েছে, এবং এটি মাইএসকিউএলটিকে সঠিকভাবে শুরু থেকে আটকে দিয়েছে:

140902 15:00:57 [ERROR] Plugin 'InnoDB' init function returned error.
140902 15:00:57 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140902 15:00:57 [ERROR] Unknown/unsupported storage engine: InnoDB
140902 15:00:57 [ERROR] Aborting

আপনি নিম্নলিখিত যে কোনও করতে পারেন:

  • My.cnf ফাইলগুলি ম্যানুয়ালি তুলনা করুন এবং InnoDB এর জন্য উপযুক্ত কনফিগারেশন সেটিংস আনুন

  • পুনরুদ্ধার করুন my.cnf.rpmsave মূলের উপর ফিরে আসুন (যে কোনও নতুন ডিফল্ট সেটিংস আপনার জন্য যোগ করা উচিত তা যাচাই করুন!)

  • মত একটি diff টুল ব্যবহার করুন vimdiff তুলনা করা my.cnf.rpmsave নতুন my.cnf এবং InnoDB সেটিংস সহ MySQL কনফিগারেশনে তৈরি করা পরিবর্তনগুলির উপর ফিরিয়ে আনা হয়েছে।

    [root]# vimdiff /etc/my.cnf /etc/my.cnf.rpmsave

আমি শেষ বিকল্পটি করেছি, তারপর মাইএসকিউএল শুরু করতে সক্ষম হয়েছিলাম:

root]# service mysqld start
Starting mysqld:                                           [  OK  ]

এবং এখন mysql_upgrade ব্যবহার করে জরিমানা কাজ করে mysql_upgrade -uroot -p তাই এটি আমাকে রুট পাসওয়ার্ডের জন্য অনুরোধ করেছিল।

[root]# mysql_upgrade -uroot -p
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
....

আশাকরি এটা সাহায্য করবে!

এবং ব্যবহার করে mysql_upgrade -uroot -p ব্যর্থ হয়েছে কারণ এটি MySQL চালানোর প্রয়োজন!

পাঠ শিখেছি:

  • আপগ্রেড করার আগে my.cnf ব্যাকআপ করুন ... এবং আনইনস্টল করার পরিবর্তে একটি ইন-স্থান আপগ্রেড করুন তবে নতুন সংস্করণ ইনস্টল করুন।
  • MySQL চলমান করুন যাতে আপনি mysql_upgrade ব্যবহার করতে পারেন।
  • লাভ।

2
2017-09-02 19:20





আমার জন্য একই সমস্যা, কিন্তু আমার সমস্যার উৎস পুরানো পাসওয়ার্ড বিন্যাস ছিল। মাইএসকিউএলকে "স্কিপ-নিরাপদ-অথ" দিয়ে পুরানো বিন্যাস ব্যবহার করে সংযুক্ত করতে বাধ্য করা যেতে পারে, তবে mysql_upgrade এই বিকল্পটি ব্যবহার করে না। আপনাকে প্রথমে নতুন ফরম্যাটের সাথে রুট পাসওয়ার্ডটি আপডেট করতে হবে এবং তারপরে আপনি আপনার mysql আপগ্রেড করতে পারেন।


1
2017-07-21 07:36





একই সমস্যা 5.1 থেকে 5.5 আপগ্রেড ছিল।

এটা আমার জন্য কাজ করেছে: sudo mysql_upgrade -S <path-to-socket> -u <myuser> -p<mypass>

আমার ত্রুটি সম্ভবত সকেট পাথের অনুমতি দ্বারা সৃষ্ট হয়েছিল, কিন্তু এটি যাচাই করার সময় ছিল না কারণটি ছিল।


1
2018-01-25 17:54



আমি কিছুক্ষন আমার ডেটাডিয়ার সরাতে চাই, আমার মনে হয় সেই কারণে আমাকে সকেটের পথ দরকার - zzapper


আমি মিন্ট 12 থেকে মিনিট 15 পর্যন্ত আমার সিস্টেমটি আপগ্রেড করার পরেই এটির মধ্যে দৌড়ে গিয়েছিলাম। আমি / var / lib / mysql সংরক্ষণাগারভুক্ত করেছি এবং পোস্ট-আপগ্রেডে এটি আবার রেখেছি। আমি প্রথম দৌড়ে mysqlcheck ব্যবহারকারী 16081 এর মন্তব্য থেকে এবং এটি mysql.sock সম্পর্কে অভিযোগ করেছে।

আমি ব্যবহার করে mysqld শুরু /usr/sbin/mysqld & এবং mysql_upgrade জরিমানা দৌড়ে।


0
2017-09-16 19:33



এটি MySQL আপগ্রেড করার জন্য একটি চমত্কার ভয়ঙ্কর পদ্ধতি, তবে আমি এটি আপনার জন্য কাজ করে আনন্দিত। - Aaron Copley
@ হারুন-কোপলি: আসলে এটি সম্পূর্ণরূপে কাজ করে নি। MySQL 5.5.32 আংশিকভাবে আমার InnoDB টেবিলগুলির অনেকগুলি উপেক্ষা করছে; তারা উপস্থিত SHOW TABLES, কিন্তু অন্যথায় অস্তিত্ব নেই। আমি বর্তমানে mysql-utilities কাজ করার চেষ্টা করছি, কিন্তু এটি পাইপন মডিউল হারিয়ে যাওয়ার অভিযোগ করছে। - Marty Vance