প্রশ্নের শিরোনামের পরামর্শ অনুসারে, আমি ওয়ার্ডপ্রেস কীভাবে মাইএসকিউএল অক্ষর সেট এবং কোলেশন বিকল্পগুলির সাথে কাজ করে তা বুঝতে খুঁজছি। আমি নীচে দেখাবো, জিনিসগুলি আমার কাছে খুব বেশি বোঝায় না ...
আমি তাদের ইনস্টলেশন পৃষ্ঠায় দেওয়া নির্দেশাবলী অনুসরণ করে ওয়ার্ডপ্রেস ইনস্টল করেছি:
https://codex.wordpress.org/Installing_WordPress
নির্দেশাবলীর অংশ হিসাবে, আমি কমান্ডলাইনে মাইএসকিউএল ডাটাবেসটি হ'ল কমান্ডগুলিতে ম্যানুয়াল তৈরির জন্য তাদের পরামর্শ অনুসরণ করেছি:
mysql> CREATE DATABASE databasename;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON databasename.* TO "wordpressusername"@"hostname"
-> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT
আরও, নির্দেশ হিসাবে, আমি ইউটিএফ -8 অক্ষর সেট ব্যবহার করতে "wp-config.php" ফাইলটি সম্পাদনা করেছি:
define( 'DB_CHARSET', 'utf8' );
... এবং কোলেশন সেটিংসটি ফাঁকা রেখে গেছে:
define( 'DB_COLLATE', '' );
এখানেই মজা শুরু হয় ...
আমি যদি এমন কোনও অক্ষর লিখি যা মাইএসকিউএল ইউটিএফ -8-এর অংশ নয়, তবে কোনও পোস্টে ইউটিএফ -8 এমবি 4, যেমন 𝌆 এর অংশ, এটি রেন্ডার পৃষ্ঠায় সঠিকভাবে প্রদর্শিত হয়। আমি এটি না হওয়ার আশা করতাম, যেহেতু আমি চরিত্রটি সেটটি ইউটিএফ -8 এমবি 4 তে সেট করে নেই, তবে আরও সীমাবদ্ধ ইউটিএফ -8 (অবশ্যই মাইএসকিউএল দ্বারা সংজ্ঞায়িত, সাধারণভাবে বোঝা যায়নি)।
আমি যদি কমান্ডলাইনে মাইএসকিউএলে সমস্যাটি তদন্ত করি, তবে এটি আরও জটিল হয়। আমি যদি চালনা করি তবে আমি
show variables like 'char%';
এই প্রতিক্রিয়াটি পেয়েছি:+--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+
আমি আশা করি ডাটাবেস অক্ষরটি ইউটিএফ -8 হবে, লাতিন 1 নয়।
আমি যদি কমান্ডটি চালিত করি
show variables like 'collation%';
তবে আউটপুটটি হ'ল:+----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | utf8_general_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+
এটি এমনকি অপরিচিত, সুস্পষ্ট কারণে (কোনও ইউটিএফ -8 ডাটাবেসে ডিফল্ট লাটিন 1_সুইডিজ_সি কোলেশন আশা করে না)।
- শেষ পর্যন্ত, যদি আমি চালিত হয়
show full columns from mywpdatabase.wp_posts;
, আউটপুট লাইনগুলি, যেখানে মান NULL নয়, কোলেশন হতে হবে তা দেখান:
| post_content_filtered | longtext | utf8mb4_unicode_ci |
আমার প্রশ্ন তখন - এটি কীভাবে ব্যাখ্যা করা যায়? যখন কনফিগারেশনে ডাটাবেসটি ইউটিএফ -8 হিসাবে সংজ্ঞায়িত করা হয়েছে তখন কেন আমার ওয়ার্ডপ্রেসটি সঠিকভাবে ইউটিএফ -8 এমবি 4 অক্ষর সরবরাহ করে? এবং মাইএসকিউলে ডাটাবেসটি ইউটিএফ -8 এর পরিবর্তে ল্যাটিন 1, সুইডিশ কোলেশন হিসাবে দেখাচ্ছে? এবং কীভাবে আসবে, এত কিছুর পরেও, টেবিলের পৃথক ক্ষেত্রগুলি utf8mb4_unicode_ci? ওয়ার্ডপ্রেস যেভাবে মাইএসকিউএল নিয়ে কাজ করে তার একটি নিম্ন স্তরের ব্যাখ্যা খুব সহায়ক হবে। ধন্যবাদ!