Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैक ओएसएक्स पर मैसकल 5.6 सिरदर्द

यहां किसी भी उत्तर ने मेरी मदद नहीं की, लेकिन आखिरकार मुझे MySQL 5.6 काम करने के लिए मिला।

MySQL 5.6 को ठीक करने के लिए तीन विकल्प:

  1. (पुष्टि की गई) संपादित करें /etc/my.cnf (यदि मौजूद नहीं है तो बनाएं) और जोड़ें:

    [mysqld]
    innodb_file_per_table = OFF
    

और MySQL को पुनरारंभ करें। फिर इसके लिए काम करने के लिए आपको अपने डेटाबेस को SQL फ़ाइल (mysqldump) में डंप करना होगा, फिर डेटाबेस को छोड़ना और फिर से बनाना होगा, फिर डेटा को वापस लोड करना होगा।

  1. OSX का डिफ़ॉल्ट ulimit मान बदलें (Github उपयोगकर्ता sodabrew द्वारा सुझाया गया ):https://superuser.com/questions/261023/how-to-change-default-ulimit-values-in-mac-os-x-10-6

  2. my.cnf के [mysqld] अनुभाग में निम्नलिखित विकल्प जोड़ें:table_open_cache = 250 . डिफ़ॉल्ट रूप से इसे 2000 पर सेट किया जाता है, जो OSX के डिफ़ॉल्ट ulimit से बहुत ऊपर है। यह समाधान भी अनुशंसित नहीं है, क्योंकि यह आपके MySQL के प्रदर्शन को नुकसान पहुंचाता है - यदि आपके पास 250 से अधिक टेबल हैं, तो यह MySQL को अक्सर तालिकाओं को फिर से खोलने के लिए मजबूर करता है:https://mariadb.com/kb/en/optimizing-table_open_cache/

यह त्रुटि क्यों हो रही है?

चूंकि MySQL 5.6 innodb_file_per_table विकल्प डिफ़ॉल्ट रूप से चालू है, जिसका अर्थ है कि प्रत्येक तालिका का डेटा अपनी फ़ाइल में संग्रहीत होता है। खुली फाइलों की संख्या की OSX डिफ़ॉल्ट सीमा 256 प्रति प्रक्रिया है। आम तौर पर यह कोई समस्या नहीं है, लेकिन मेरे मामले में मैं समानांतर में यूनिट परीक्षण चला रहा हूं, जो प्रत्येक में 405 टेबल के साथ 8 डेटाबेस बनाता है। OSX में प्रति प्रक्रिया खुली फ़ाइल हैंडल की संख्या की एक सीमा होती है। यह StackOverflow उत्तर सुझाव देता है कि यह सीमा 256 है, जो मेरी समस्या को पूरी तरह से समझाती है:MySQL 5.6 से पहले इन सभी 8 डेटाबेस से सभी डेटा एक फ़ाइल में था।

मेरे सहयोगी थॉमस एल को धन्यवाद, जिन्हें MySQL बग रिपोर्ट मिली। जिसने इस समाधान का संकेत दिया!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/MySQL में भू-खोज (दूरी) (प्रदर्शन)

  2. MySQL तालिका को बदलता है और डेटा को टेक्स्ट से डेटाटाइम में परिवर्तित करता है

  3. mysql बाएँ बाहरी शामिल हों

  4. अजगर 3.5 - django 1.10 - mysqlclient विंडोज़ 7 स्थापना त्रुटि

  5. MySql कार्यक्षेत्र इंस्टॉलर को स्थापित करने के लिए Visual C++ 2015 पुनर्वितरण योग्य पैकेज की आवश्यकता है, लेकिन यह पहले से ही स्थापित है