MySQL पर वैश्विक चारसेट को कैसे कॉन्फ़िगर करें


12

मैंने अपने MySQL के लिए my.cnf के माध्यम से चार्ट को बदलने की कोशिश की और यह विफल रहा। मैंने नीचे सूचीबद्ध वर्णसेट सेटिंग्स जोड़ी:

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

# ------------- MYSQL CHARSETS --------------
character_set_system = utf8
character_set_server = utf8
character_set_results = utf8
character_set_database = utf8
character_set_connection = utf8
character_set_client = utf8

collation_connection = utf8_general_ci
collation_database = utf8_general_ci
collation_server = utf8_general_ci

जब मैंने इन्हें सक्षम किया था, तो MySQL प्रारंभ करने में विफल रहा। मैं यह सुनिश्चित करने के लिए कि सब कुछ utf8 के लिए कैसे कर सकता हूँ - हमेशा?

अपडेट करें

अभी भी कुछ स्थानों पर UTF8 होने में समस्याएं हैं

character_set_client    utf8
character_set_connection    utf8
character_set_database  latin1
character_set_filesystem    binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database  latin1_swedish_ci
collation_server    latin1_swedish_ci

दुर्भाग्य से मैं अभी भी एक विलेपन के साथ नहीं आया हूं ... कोई विचार?

वर्तमान में मैं इस कॉन्फ़िगरेशन का सफलतापूर्वक उपयोग कर रहा हूं:

[mysqld]
default-character-set = utf8
init-connect='SET NAMES utf8'
character-set-server = utf8


[mysql]
default-character-set = utf8

लेकिन PHPMyAdmin अभी भी कुछ latin1 दिखा रहा है

character_set_client    utf8
character_set_connection    utf8
character_set_database  latin1
character_set_filesystem    binary
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir  /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database  latin1_swedish_ci
collation_server    latin1_swedish_ci

जवाबों:


23

आपको अपनी my.cnf फ़ाइल में निम्नलिखित को शामिल करना होगा

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
default-character-set = utf8    
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

आप निम्नलिखित मैनुअल पृष्ठों पर अधिक जानकारी पा सकते हैं

मार्क के जवाब के जवाब में, यदि आपको मौजूदा टेबल / डेटाबेस को सही वर्ण सेट में बदलने की आवश्यकता है, तो आपको एक उपयुक्त ALTERक्वेरी की आवश्यकता होगी । नीचे के समान कुछ:

ALTER TABLE `table` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

वैकल्पिक रूप से यहाँ एक बेहतरीन PHP स्क्रिप्ट है जो आपके लिए है।


मैंने आपके निर्देशों का पालन किया है और प्रलेखन लिंक की जाँच की ... अभी भी कुछ मुद्दे हैं (देखें ^)

जब भी मैं जोड़ने collation-server = utf8_general_ciके लिए mysqldखंड mysql पुनः आरंभ करने में विफल रहता है

क्या आप देख सकते हैं कि लॉग फ़ाइल में क्या है? यह आपको एक त्रुटि संदेश देना चाहिए कि यह विफल क्यों हुआ। मैं इसे अपने mysqld utf8 सामान्य चरित्र सेट शामिल के साथ संकलित था?

हाँ, मुझे लगता है कि यह कौन सी लॉग फ़ाइल थी ...?

1
मेरे लिए काम करता है (डेबियन 8, MySQL 5.5), अनुभाग के default-character-set = utf8तहत लाइन को छोड़कर [mysqld]। Mysqld में इस लाइन को जोड़ने से रिस्टार्ट करने के लिए हमेशा के लिए परिणाम मिल जाते हैं। यूनिकोड समर्थन, हालांकि, इस लाइन पर भी w / o काम करता है।
बास

2

बेन का जवाब ठीक है, लेकिन सेटिंग्स बदलने से मौजूदा टेबल कैरेक्टर सेट या कोलाज में बदलाव नहीं होगा। एक उचित परिवर्तन कथन के साथ ऐसा करें।

ध्यान दें कि यदि आप इसे निर्दिष्ट नहीं करते हैं, तो डेटाबेस डिफॉल्ट कैरेक्टर सेट में टेबल बनाए जाते हैं। यह एक प्रति-डेटाबेस सेटिंग है जिसे ALTER DATABASE के साथ समायोजित किया जा सकता है। यह भी my.cnf में सेट नहीं है।


1
नए डेटाबेस डिफ़ॉल्ट mysql सेटिंग्स को वारिस करेंगे, हालांकि, है ना?
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.