ডিফল্ট অক্ষর_সেট_সার্ভারটি ল্যাটিন 1 কেন?


12

আমি মাইএসকিউএল 5.5 ব্যবহার করছি এবং যখন আমি চরসেট সম্পর্কে ভেরিয়েবল দেখি, আমার কাছে রয়েছে

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+

আমি পরিবর্তন করতে হবে উচিত character_set_databaseএবং character_set_serverকরতে utf8?

উত্তর:


8

চিন্তা করুন:

  • আপনি ডাটাবেসে ডেটা সংরক্ষণ করছেন latin1
  • আপনি ডেটা মাইএসকিএলডি হিসাবে অভ্যন্তরীণভাবে পরিচালনা করা হয় latin1

যদি ওএস থেকে বা সংযোগ থেকে প্রাপ্ত ডেটা হয় utf8, তবে মাইএসকিএলডি কীভাবে এটি ব্যবহার করবে?

অনুমান করা বা সর্বোত্তম আশা করার পরিবর্তে আপনি আগত অক্ষর সেট আচরণ পরিবর্তন করতে পারেন। ব্যতীত information_schemaএবং mysql, আপনার সমস্ত ডাটাবেস নেওয়া এবং ডিফল্ট অক্ষর সেট সেট utf8:

ALTER DATABASE dbname CHARACTER SET utf8;

এটির সাথে যেতে যদি আপনার একটি নির্দিষ্ট সংঘর্ষ হয় তবে এটি করুন:

ALTER DATABASE dbname COLLATE 'utf8_general_ci';

কোলেশনগুলি এখানে থেকে বেছে নেওয়ার জন্য রয়েছে:

mysql> select * from information_schema.collations where CHARACTER_SET_NAME = 'utf8';
+--------------------+--------------------+-----+------------+-------------+---------+
| COLLATION_NAME     | CHARACTER_SET_NAME | ID  | IS_DEFAULT | IS_COMPILED | SORTLEN |
+--------------------+--------------------+-----+------------+-------------+---------+
| utf8_general_ci    | utf8               |  33 | Yes        | Yes         |       1 |
| utf8_bin           | utf8               |  83 |            | Yes         |       1 |
| utf8_unicode_ci    | utf8               | 192 |            | Yes         |       8 |
| utf8_icelandic_ci  | utf8               | 193 |            | Yes         |       8 |
| utf8_latvian_ci    | utf8               | 194 |            | Yes         |       8 |
| utf8_romanian_ci   | utf8               | 195 |            | Yes         |       8 |
| utf8_slovenian_ci  | utf8               | 196 |            | Yes         |       8 |
| utf8_polish_ci     | utf8               | 197 |            | Yes         |       8 |
| utf8_estonian_ci   | utf8               | 198 |            | Yes         |       8 |
| utf8_spanish_ci    | utf8               | 199 |            | Yes         |       8 |
| utf8_swedish_ci    | utf8               | 200 |            | Yes         |       8 |
| utf8_turkish_ci    | utf8               | 201 |            | Yes         |       8 |
| utf8_czech_ci      | utf8               | 202 |            | Yes         |       8 |
| utf8_danish_ci     | utf8               | 203 |            | Yes         |       8 |
| utf8_lithuanian_ci | utf8               | 204 |            | Yes         |       8 |
| utf8_slovak_ci     | utf8               | 205 |            | Yes         |       8 |
| utf8_spanish2_ci   | utf8               | 206 |            | Yes         |       8 |
| utf8_roman_ci      | utf8               | 207 |            | Yes         |       8 |
| utf8_persian_ci    | utf8               | 208 |            | Yes         |       8 |
| utf8_esperanto_ci  | utf8               | 209 |            | Yes         |       8 |
| utf8_hungarian_ci  | utf8               | 210 |            | Yes         |       8 |
| utf8_sinhala_ci    | utf8               | 211 |            | Yes         |       8 |
+--------------------+--------------------+-----+------------+-------------+---------+
22 rows in set (0.03 sec)

আপনি চালাতে পারে

mysql> show collation where charset='utf8';
+--------------------+---------+-----+---------+----------+---------+
| Collation          | Charset | Id  | Default | Compiled | Sortlen |
+--------------------+---------+-----+---------+----------+---------+
| utf8_general_ci    | utf8    |  33 | Yes     | Yes      |       1 |
| utf8_bin           | utf8    |  83 |         | Yes      |       1 |
| utf8_unicode_ci    | utf8    | 192 |         | Yes      |       8 |
| utf8_icelandic_ci  | utf8    | 193 |         | Yes      |       8 |
| utf8_latvian_ci    | utf8    | 194 |         | Yes      |       8 |
| utf8_romanian_ci   | utf8    | 195 |         | Yes      |       8 |
| utf8_slovenian_ci  | utf8    | 196 |         | Yes      |       8 |
| utf8_polish_ci     | utf8    | 197 |         | Yes      |       8 |
| utf8_estonian_ci   | utf8    | 198 |         | Yes      |       8 |
| utf8_spanish_ci    | utf8    | 199 |         | Yes      |       8 |
| utf8_swedish_ci    | utf8    | 200 |         | Yes      |       8 |
| utf8_turkish_ci    | utf8    | 201 |         | Yes      |       8 |
| utf8_czech_ci      | utf8    | 202 |         | Yes      |       8 |
| utf8_danish_ci     | utf8    | 203 |         | Yes      |       8 |
| utf8_lithuanian_ci | utf8    | 204 |         | Yes      |       8 |
| utf8_slovak_ci     | utf8    | 205 |         | Yes      |       8 |
| utf8_spanish2_ci   | utf8    | 206 |         | Yes      |       8 |
| utf8_roman_ci      | utf8    | 207 |         | Yes      |       8 |
| utf8_persian_ci    | utf8    | 208 |         | Yes      |       8 |
| utf8_esperanto_ci  | utf8    | 209 |         | Yes      |       8 |
| utf8_hungarian_ci  | utf8    | 210 |         | Yes      |       8 |
| utf8_sinhala_ci    | utf8    | 211 |         | Yes      |       8 |
+--------------------+---------+-----+---------+----------+---------+
22 rows in set (0.00 sec)

mysql>

একটি ডাটাবেসের স্বতন্ত্র অক্ষরটি দেখতে এটি চালান:

mysql> show create database sample;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| sample   | CREATE DATABASE `sample` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

সেটিংস হিসাবে, আপনি এটি চেষ্টা করতে পারেন:

লাইনগুলিতে যুক্ত করুন my.cnf

[mysqld]
character_set_database=utf8
character_set_server=utf8

তারপরে মাইএসকিএল পুনরায় চালু করুন

আমি এটি নিয়ে আগস্ট 01, 2011 তে আলোচনা করেছি: একটি সারণীতে অক্ষর সেট এনকোডিং

ক্যাভেট (উইন্ডোজ মাইএসকিউএল ডিবি সার্ভারের জন্য)

এই আদেশগুলি

ALTER DATABASE dbname CHARACTER SET utf8;
ALTER DATABASE dbname COLLATE 'utf8_general_ci';

উইন্ডোজ যেভাবে ফাইলগুলি লক করে সে কারণে মাইএসকিউএলের উইন্ডোজ সংস্করণে কাজ করবেন না। প্রয়োজনীয় ফাইলটিকে বলা হয় db.optযা ডাটাবেস সাবফোল্ডারটিতে অবস্থিত datadir

আপনাকে নিম্নলিখিতগুলি করতে হতে পারে:

  • mysqldump সেই ডাটাবেস (কোনও ডাটাবেস তৈরি করে না তথ্য, কেবল সারণী তৈরি এবং INSERTs)
  • যে ডাটাবেস ড্রপ
  • নির্দিষ্ট চারসেট এবং কোলেশন সহ ডাটাবেস তৈরি করুন
  • এটি ডাম্প মধ্যে পুনরায় লোড

উপসংহার

আপনি যা কিছু করেন না কেন, আপনি পছন্দসই প্রভাবগুলি পান কিনা তা দেখতে দয়া করে কোনও ডিভ / স্টেজিং সার্ভারে কোনও পরিবর্তন সম্পাদন করুন

আপডেট 2012-12-05 11:00 ইডিটি

তোমার প্রশ্নগুলো

আমি কি সত্যিই এটি পরিবর্তন করা উচিত?

ডেটার যথাযথ চিকিত্সার গ্যারান্টি দেওয়ার জন্য, আপনি আপেল-টু আপেল নিশ্চিত করতে চাইতে পারেন। একটি চার্সেট হিসাবে প্রস্তুত ডেটা এবং এটি একটি টেবিলের সাথে ডাটাবেসের সাথে লোড করা সম্ভবত ডেটাটি সারিবদ্ধ করে যেমন এটি দেখায় অন্য অক্ষরটি সম্ভবত চরসেট মাইএসকিএলডি সঙ্গে ডেটা প্রদর্শন করবে না যখন পুনরুদ্ধার করা হবে এবং কোনও ডিবি সংযোগে ফেরত পাঠানো হবে। ডেভ / স্টেজিং সার্ভারে ডেটাবেস লোড করার চেষ্টা করুন এবং ডিফল্ট অক্ষরগুলি সেট করার জন্য পরীক্ষা করুন।

কিছু ডিফল্ট কেন কিছু utf8ডিফল্ট ব্যবহার করে latin1?

এটি মাইএসকিউএল বাইনারি এর ওএস সংস্করণের উপর নির্ভর করবে। উইন্ডোজ সংস্করণগুলি থাকতে পারে latin1যখন লিনাক্স সংস্করণগুলি ব্যবহার করতে পারে utf8


হাই, আপনার বিস্তারিত উত্তরের জন্য ধন্যবাদ। আসলে আমার প্রশ্নগুলি কীভাবে এটি পরিবর্তন করা যায় তা নিয়ে নয়, তবে ... ১. আমার কি আসলেই এটি পরিবর্তন করা উচিত? ২. কিছু ডিফল্ট কেন utf8 ব্যবহার করে তবে কিছু ডিফল্ট ল্যাটিন 1 ব্যবহার করে
যোগে

1
(প্রথমে ধন্যবাদ) এটি মাইএসকিউএল বাইনারি এর ওএস সংস্করণের উপর নির্ভর করবে। <- মানে আমি যখন উবুন্টুতে থাকি তখন ডিফল্টটি কেন latin1এবং utf8যেমন, উদাহরণস্বরূপ character_set_connectionutf8 হয় তবে character_set_databaseল্যাটিন 1
যোগ

1
@ রোল্যান্ডো [mysqld] character_set_database=utf8 character_set_server=utf8কাজ করে না
জর্জি বি।

আমি এখনও এটি পেলাম না ... এমনকি হোস্ট ওএস কিছু মূর্খ সীমিত চরসেট ব্যবহার করে, ডিফল্টরূপে চার্সেটে কোনও পাঠ্যরূপী সংরক্ষণ করা উচিত যা কোনও অক্ষরকে উপস্থাপন করতে পারে, এমনকি যদি এটি ইনপুট গ্রহণ করে latin1এবং এটিকে রূপান্তর করতে হয় সঞ্চয়ের জন্য?
অ্যান্ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.