আমি এর পুরো উত্তর দিতে কয়েকটি পোস্ট একত্রিত করতে চেয়েছিলাম যেহেতু এটি কয়েকটি পদক্ষেপ বলে মনে হচ্ছে।
- উপরে @madtracey পরামর্শ
/etc/mysql/my.cnf
অথবা /etc/mysql/mysql.conf.d/mysqld.cnf
[mysql]
default-character-set=utf8mb4
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
##
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
আবার উপরের পরামর্শ থেকে সমস্ত জেডিবিসি সংযোগ ছিল characterEncoding=UTF-8
এবংcharacterSetResults=UTF-8
তাদের কাছ থেকে মুছে
এই সেট দিয়ে -Dfile.encoding=UTF-8
নিয়ে কোনও পার্থক্য দেখা গেল।
আমি এখনও উপরের মতো একই ব্যর্থতা পেয়ে ডিবিতে আন্তর্জাতিক পাঠ্য লিখতে পারি নি
এখন এটি কীভাবে রূপান্তর করতে হবে সম্পূর্ণ-মাইএসকিএল-ডাটাবেস-ক্যারেটসেট-এবং-কোলেশন-থেকে-ইউটিএফ -8
আপনার সমস্ত ডিবি ব্যবহার করার জন্য আপডেট করুন utf8mb4
ALTER DATABASE YOURDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
এই কোয়েরিটি চালান যা আপনাকে যা চালানোর দরকার তা দেয়
SELECT CONCAT(
'ALTER TABLE ', table_name, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ',
'ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ')
FROM information_schema.TABLES AS T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` AS C
WHERE C.collation_name = T.table_collation
AND T.table_schema = 'YOURDB'
AND
(C.CHARACTER_SET_NAME != 'utf8mb4'
OR
C.COLLATION_NAME not like 'utf8mb4%')
সমস্ত প্রতিস্থাপন এডিটর কপি পেস্ট আউটপুট সঠিক ডিবিতে সংযুক্ত হওয়ার পরে কোনও কিছুর সাথেই মাইএসকিএল-এ ফিরে আসে না।
এটিই হ'ল কাজটি করতে হয়েছিল এবং সমস্তই আমার পক্ষে কাজ করে বলে মনে হচ্ছে। - Dfile.encoding=UTF-8
সক্ষম নয় এবং এটি প্রত্যাশার মতো কাজ করবে বলে মনে হয়
E2A এখনও একটি সমস্যা আছে?
আমি অবশ্যই প্রযোজনায় আছি তাই এটি উপরে পরিণত হয়েছে যে আপনাকে উপরে থেকে কী করা হয়েছে তা পরীক্ষা করে দেখার দরকার, যেহেতু এটি কখনও কখনও কাজ করে না, এখানে এই দৃশ্যের কারণ এবং স্থিরকরণ রয়েছে:
show create table user
`password` varchar(255) CHARACTER SET latin1 NOT NULL,
`username` varchar(255) CHARACTER SET latin1 NOT NULL,
আপনি দেখতে পাচ্ছেন কিছু এখনও রেকর্ডটিকে ম্যানুয়ালি আপডেট করার ল্যাটিন চেষ্টা করছে:
ALTER TABLE user CONVERT TO CHARACTER SET utf8mb4;
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
সুতরাং আসুন এটি সঙ্কুচিত করুন:
mysql> ALTER TABLE user change username username varchar(255) CHARACTER SET utf8mb4 not NULL;
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
mysql> ALTER TABLE user change username username varchar(100) CHARACTER SET utf8mb4 not NULL;
Query OK, 5 rows affected (0.01 sec)
সংক্ষেপে আমাকে কাজের ক্ষেত্রের আপডেট পাওয়ার জন্য সেই ক্ষেত্রটির আকার হ্রাস করতে হয়েছিল।
এখন যখন আমি চালাব:
mysql> ALTER TABLE user CONVERT TO CHARACTER SET utf8mb4;
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
এটি সব কাজ করে