मैं इसका पूरा उत्तर देने के लिए कुछ पोस्ट जोड़ना चाहता था क्योंकि यह कुछ चरणों में दिखाई देता है।
- @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
फिर से सभी jdbc कनेक्शन के ऊपर सलाह से characterEncoding=UTF-8
और characterSetResults=UTF-8
उनसे हटा दिया गया था
इस सेट के साथ -Dfile.encoding=UTF-8
कोई फर्क नहीं दिखाई दिया।
मैं अभी भी db में अंतरराष्ट्रीय पाठ नहीं लिख सका जैसा कि ऊपर बताया गया है
अब इसका उपयोग कैसे करें-कैसे-करें-संपूर्ण-mysql-database-characterset-and-collation-to-utf-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%')
संपादक में कॉपी पेस्ट आउटपुट सभी को बदलें | सही db से जुड़े होने पर mysql में वापस कुछ भी नहीं।
वह सब कुछ किया जाना था और सब मेरे लिए काम करने लगता है। नहीं - 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
यह सब काम करता है