ক্যারেক্টার_সেট_স্লায়েন্টের মান utf8mb4 এ সেট করুন


12

আমি আমার ডিবিকে এই গাইডutf8mb4 অনুসরণ করে রূপান্তর করার চেষ্টা করছি । আমি সেট করেছি:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
init-connect='SET NAMES utf8mb4'
collation_server=utf8mb4_unicode_ci
character_set_server=utf8mb4
skip-character-set-client-handshake

কিন্তু এর মান character_set_clientএবং character_set_resultsএখনও utf8mb4 এ পরিবর্তিত হবে না।

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8               |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8               |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+

আমি কি ভুল করছি? কীভাবে আমি এই মানগুলি utf8mb4 এ সেট করব?

উত্তর:


14

প্রকাশ: আমি মাইএসকিউএল ডেটাবেসগুলিতে কীভাবে সম্পূর্ণ ইউনিকোডকে সমর্থন করব , তার গাইড আপনি অনুসরণ করছেন।

  1. আপনি পরিবর্তিত সেটিংসটি কোথায় সংরক্ষণ করেছেন? mysqldডিফল্ট বিকল্পগুলি কোথা থেকে লোড করে তা পরীক্ষা করে দেখুন । এটি সাধারণত /etc/my.cnf( গাইড হিসাবে উল্লিখিত ) তবে এটি আপনার সিস্টেমে ভিন্ন হতে পারে। এটি জানতে নিম্নলিখিত কমান্ডটি চালান:

    $ mysqld --help --verbose 2> /dev/null | grep -A1 'Default options'
    Default options are read from the following files in the given order:
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
  2. আপনি পরিবর্তনগুলি পরে mysqldচালিয়ে পুনরায় আরম্ভ করেছেন mysqld restart?


1. আমি পরিবর্তনগুলি সংরক্ষণ করেছি \xampp\mysql\bin\my.ini। আমি দৌড়াতে অক্ষম ছিলাম mysqld --help --verbose 2> /dev/null | grep -A1 'Default options'- যেহেতু এটি নিম্নলিখিত ত্রুটিটি দেয়: 'grep' is not recognized as an internal or external command, operable program or batch file.আমি এই স্টাফটিতে নতুন, তাই আমি কিছু ভুল করছি।
Qwaz

২. আমি মাইএসকিএলডিটি পুনরায় চালু করেছি এবং এটি আমাকে নিম্নলিখিত সতর্কবার্তা দেওয়ার পরে: 2014-02-19 10:25:17 0 [সতর্কতা] অক্ষর-সেট-ক্লায়েন্ট-হ্যান্ডশেকের পরিবর্তে অনন্য বিকল্প উপসর্গের অক্ষর_সেট_স্লিয়েন্ট ব্যবহার করা অবজ্ঞা করা হয়েছে এবং সরানো হবে ভবিষ্যতে মুক্তি পরিবর্তে পুরো নামটি ব্যবহার করুন। 2014-02-19 10:25:17 0 [সতর্কতা] মাইএসকিএলডি: অবৈধ মান 'utf8mb4' এর কারণে '--character-set-ਗਾਹਕ-হ্যান্ডশেক' অপছন্দ
qwaz

1
skip-character-set-client-handshakeআপনার কনফিগারেশন ফাইলটিতে আপনার কী আছে ? এটি একটি কমান্ড-লাইন বিকল্প, ভেরিয়েবল নয়।
ম্যাথিয়াস বাইনেস

1
আমাকে স্থানীয় সার্ভারটি পুনরায় ইনস্টল করতে হয়েছিল; আপনার গাইডের মধ্য দিয়ে আবার চললেন এবং সমস্ত কিছু কাজ করে। আমি আপনার প্রতিক্রিয়া এবং সহায়তা কৃতজ্ঞ। আমি আপনার উত্তরে ফিরে আসব এবং যত তাড়াতাড়ি আমার কাছে এটি করার যথেষ্ট পরিমাণে রেপ্টি পেয়েছে তা তত্ক্ষণাত এটিকে উত্সাহিত করব।
Qwaz

3
আমি এই চেষ্টা করেছিলেন কিন্তু এখনও character_set_client, character_set_connection, character_set_results, collation_connectionহিসাবে দেখানো হয় utf8। কোন ধারণা কেন এটি কাজ করছে না?
সরিতা

2

আমি সেই নির্দেশিকাটিও অনুসরণ করেছি, তবে একই সমস্যাটি আবার উপস্থিত হয়েছিল। আসল ইস্যুটি ডিবি তৈরির জন্য ব্যবহৃত কমান্ডের মধ্যে DEFAULT CHARACTERযেমন আর্গুমেন্ট হিসাবে গ্রহণ করা হয় এবং যদি তা কার্যকর না করা হয় তবে একটি ডিফল্ট অক্ষর সেট পাস হয় যা হয় না utfmb4

এটি ঠিক করার জন্য নীচের পদক্ষেপগুলি অনুসরণ করেছি:

  1. utf8mb4অক্ষর সেট সহ একটি ডামি ডাটাবেস তৈরি করুন ।

    create database `your_db_name_dummy`
      DEFAULT CHARACTER SET utf8mb4
      DEFAULT COLLATE utf8mb4_unicode_ci;
  2. প্রকৃত ডাটাবেস থেকে এই ডামি ডাটাবেসে আসল কাঠামো এবং ডেটা অনুলিপি করুন

    mysqldump -uroot -proot_password your_db_name | mysql -uroot -proot_password your_db_name_dummy

  3. বর্তমান ডাটাবেস ড্রপ করুন

    SET FOREIGN_KEY_CHECKS=0;
    DROP DATABASE your_db_name;
  4. নতুন ডাটাবেস তৈরি করুন

    create database `your_db_name`
      DEFAULT CHARACTER SET utf8mb4
      DEFAULT COLLATE utf8mb4_unicode_ci;
  5. শেষ অবধি, টেবিলের কাঠামো এবং ডেটাটি মূল ডাটাবেসে ফিরিয়ে দিন

    mysqldump -uroot -proot_password your_db_name_dummy | mysql -uroot -proot_password your_db_name

আপনি যদি উপরে উল্লিখিত পদ্ধতিটি ব্যবহার করতে চলেছেন তবে দয়া করে নিচের দিকে উল্লেখ করা রেখাগুলিও যত্ন সহকারে পড়তে ভুলবেন না।

পূর্বশর্ত এবং আমার স্থিতি:

  • আপনার সমস্ত কাঠামো, ডেটা, সঞ্চিত পদ্ধতি, ফাংশন, ট্রিগার ইত্যাদি ব্যাকআপ করুন up
  • mysql --version mysql Ver 14.14 ডিস্ট্রিবিউট 5.7.22, লিনাক্সের জন্য (x86_64) এডিটলাইন মোড়কে ব্যবহার করে

  • cat /etc/my.cnf

    [client]
    default-character-set = utf8mb4
    
    [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    character-set-client-handshake = FALSE
    character-set-server = utf8mb4
    init-connect = 'SET NAMES utf8mb4
    collation-server = utf8mb4_unicode_ci
  • আমি জাভা ক্লায়েন্ট ব্যবহার করছি যা 'mysql:mysql-connector-java:5.1.30'

  • আমার সংযোগ স্ট্রিং হয় jdbc:mysql://ip.of.database:3306/your_db_name?zeroDateTimeBehavior=convertToNull&noAccessToProcedureBodies=true&autoReconnect=true
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.