সবচেয়ে নিরাপদ উপায় হ'ল কলামগুলিকে প্রথমে বাইনারি টাইপে সংশোধন করা এবং তারপরে পছন্দসই চরসেট ব্যবহার করে এটিতে আবার পরিবর্তন করুন ify
প্রতিটি কলামের টাইপের স্বতন্ত্র বাইনারি টাইপ রয়েছে:
- চর => বিনারি
- পাঠ্য => ব্লগ
- TINYTEXT => TINYBLOB
- মিডিয়ামটেক্সট => মিডিয়ামব্লব
- লম্বটেক্সট => লংব্লব
- VARCHAR => VARBINARY
যেমন .:
ALTER TABLE [TABLE_SCHEMA].[TABLE_NAME] MODIFY [COLUMN_NAME] VARBINARY;
ALTER TABLE [TABLE_SCHEMA].[TABLE_NAME] MODIFY [COLUMN_NAME] VARCHAR(140) CHARACTER SET utf8mb4;
আমি বেশ কয়েকটি লাতিন 1 টেবিলগুলিতে চেষ্টা করেছি এবং এটি সমস্ত ডায়াক্রিটিক্সকে রেখে দিয়েছে।
এটি করে সমস্ত কলামের জন্য আপনি এই ক্যোয়ারীটি বের করতে পারেন:
SELECT
CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.', TABLE_NAME,' MODIFY ', COLUMN_NAME,' VARBINARY;'),
CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.', TABLE_NAME,' MODIFY ', COLUMN_NAME,' ', COLUMN_TYPE,' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM information_schema.columns
WHERE TABLE_SCHEMA IN ('[TABLE_SCHEMA]')
AND COLUMN_TYPE LIKE 'varchar%'
AND (COLLATION_NAME IS NOT NULL AND COLLATION_NAME NOT LIKE 'utf%');
আপনার সমস্ত কলামে এটি করার পরে আপনি এটি সমস্ত টেবিলগুলিতে করুন:
ALTER TABLE [TABLE_SCHEMA].[TABLE_NAME] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
আপনার সমস্ত টেবিলের জন্য এই কোয়েরিটি তৈরি করতে, নিম্নলিখিত কোয়েরিটি ব্যবহার করুন:
SELECT
CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_COLLATION NOT LIKE 'utf8%'
and TABLE_SCHEMA in ('[TABLE_SCHEMA]');
এবং এখন আপনি আপনার সমস্ত কলাম এবং টেবিলগুলি সংশোধন করেছেন, ডাটাবেসে একই করুন:
ALTER DATABASE [DATA_BASE_NAME] CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;
utf8_unicode_ci
, নাutf8_general_ci
।