# 1273 - অজানা সমষ্টি: 'utf8mb4_unicode_ci' সিপ্যানেল


183

আমার স্থানীয় মেশিনে আমার একটি ওয়ার্ডপ্রেস ডাটাবেস রয়েছে যা আমি সিপ্যানেলে একটি হোস্ট করা পিএইচপিএমআইএডমিনে স্থানান্তর করতে চাই। যাইহোক, যখন আমি পরিবেশে ডেটাবেস আমদানি করার চেষ্টা করি তখন আমি এই ত্রুটিটি পেতে থাকি:

#1273 - Unknown collation: 'utf8mb4_unicode_ci' 

আমি গুগলকে আশেপাশে চেষ্টা করেছি এবং একমাত্র সমাধানটি আমি খুঁজে পেতে পারি এটি হ'ল এই একটি পিএমপিএসআইএসএল ত্রুটি - # 1273 - # 1273 - অজানা কোলেশন: 'utf8mb4_general_ci' যা এখন পর্যন্ত খুব বেশি সহায়ক নয়। আমি কুকিগুলি সাফ করার চেষ্টা করেছি তবে এটি এখনও কার্যকর হবে না। সাহায্য করুন!


ওয়ার্ডপ্রেসের কোন সংস্করণ? দেখুন make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade
রিক জেমস

উত্তর:


107

আমার সমস্ত সার্ভারের মাইএসকিউএল-র পুরানো সংস্করণ চালানো হিসাবে আমার একই সমস্যা ছিল। এটি পিএইচপি স্ক্রিপ্ট চালিয়ে সমাধান করা যেতে পারে। একটি ফাইলে এই কোড সংরক্ষণ করুন এবং এটি ডাটাবেসের নাম, ব্যবহারকারী এবং পাসওয়ার্ড লিখে চালানোর এবং তা থেকে কোলেশন পরিবর্তন করব utf8mb4/utf8mb4_unicode_ciকরারutf8/utf8_general_ci

<!DOCTYPE html>
<html>
<head>
  <title>DB-Convert</title>
  <style>
    body { font-family:"Courier New", Courier, monospace; }
  </style>
</head>
<body>

<h1>Convert your Database to utf8_general_ci!</h1>

<form action="db-convert.php" method="post">
  dbname: <input type="text" name="dbname"><br>
  dbuser: <input type="text" name="dbuser"><br>
  dbpass: <input type="text" name="dbpassword"><br>
  <input type="submit">
</form>

</body>
</html>
<?php
if ($_POST) {
  $dbname = $_POST['dbname'];
  $dbuser = $_POST['dbuser'];
  $dbpassword = $_POST['dbpassword'];

  $con = mysql_connect('localhost',$dbuser,$dbpassword);
  if(!$con) { echo "Cannot connect to the database ";die();}
  mysql_select_db($dbname);
  $result=mysql_query('show tables');
  while($tables = mysql_fetch_array($result)) {
          foreach ($tables as $key => $value) {
           mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
     }}
  echo "<script>alert('The collation of your database has been successfully changed!');</script>";
}

?>

47
এটি ওভারকিল mysqldump --compatible=mysql4
বনামের

2
আমার জন্য এটি কাজ করে। ফাইলটির নাম মনে রাখবেনdb-convert.php
ফ্রেড কে

1
আপনি যদি 'লোকালহোস্ট' তৈরি করেন তবে এটি নিখুঁত।
br4nnigan

2
mysqldump --compatible=mysql4বা নীচের উত্তরটি আরও ভাল বিকল্প। আমি মনে করি না যে কোনও লাইভ সাইটে এই জাতীয় কিছু পরিবর্তন করা বুদ্ধিমান ধারণা। সঠিক ফর্ম্যাটে রফতানি করা ভাল, বা যদি এটি কোনও বিকল্প না হয় তবে এক্সপোর্ট করা ফাইলটি সম্পাদনা করুন।
তিশ্চ

সুতরাং আপনি সবেমাত্র আমার জীবন বাঁচিয়েছেন, আর আমি আপনাকে যে যা দিতে পারি তা হ'ল একটি +1।
তারুক

229

এই পোস্টের কৌশলটি আমার পক্ষে কাজ করেছিল

1) ডাটাবেসের জন্য "রফতানি" ট্যাবে ক্লিক করুন

2) "কাস্টম" রেডিও বোতামটি ক্লিক করুন

3) "ফর্ম্যাট-নির্দিষ্ট বিকল্পগুলি" শিরোনামে বিভাগে যান এবং "ডাটাবেস সিস্টেম বা পুরানো মাইএসকিউএল সার্ভারের সাথে আউটপুট সামঞ্জস্যকে সর্বাধিকতর করতে:" নন থেকে এমওয়াইএসকিউএল 40 এ ড্রপডাউন পরিবর্তন করুন।

4) নীচে স্ক্রোল করুন এবং "যান" ক্লিক করুন।

এটি করার ফলে কোনও ডেটা ক্ষতি হওয়ার কারণ কিনা তা আমি নিশ্চিত নই, তবে একবারে চেষ্টা করে দেখলাম আমি কিছুই লক্ষ্য করিনি। ফোরামে যে কেউ প্রতিক্রিয়া জানায়নি তারা উপরেও লিঙ্ক করেছেন।

8/12/16 সম্পাদনা করুন - আমি বিশ্বাস করি যে এইভাবে একটি ডেটাবেস রফতানির ফলে ব্ল্যাক স্টুডিও টিনিএমসিই ভিজ্যুয়াল এডিটর উইজেটগুলিতে সংরক্ষিত ডেটা হারাতে পারে , যদিও আমি নিশ্চিত করার জন্য একাধিক পরীক্ষা চালিয়েছি না।


আমার জন্য কাজ করেনি, আমি ত্রুটি পেয়েছি # 1231 - চলক '
চরিত্র_সেট_স্লায়েন্ট

অন্যান্য সমাধানগুলিতে একাধিক ব্যর্থ চেষ্টার পরে, এটি প্রথম প্রচেষ্টাটিতে নিখুঁতভাবে কাজ করেছিল।
ভিনসেন্ট পলিসি

কিছু নতুন ওয়ার্ডপ্রেস সাইট নিয়ে কাজ করে না। অন্য সার্ভারে এটি আমদানি করার সময়, এটি প্রথম টেবিলে এই ত্রুটিটি উত্পন্ন করে যা এটি আমদানির চেষ্টা করে (wp_commentmeta) # 1064 - আপনার এসকিউএল সিনট্যাক্সে আপনার একটি ত্রুটি রয়েছে; ডান সিনট্যাক্সের জন্য আপনার মাইএসকিউএল সার্ভার সংস্করণের সাথে সামঞ্জস্যপূর্ণ ম্যানুয়ালটি পরীক্ষা করে দেখুন 'টিওয়াইপি = মাইসাম আউটপুট ক্রিমেন্ট = 1' লাইন 19
যে-বেন

এটি আমার জন্য কোনও
তাত্পর্যপূর্ণ

আপনি বস
আসিল আশরাফ

159

আপনি যদি ইতিমধ্যে একটি .sqlফাইল রফতানি করে থাকেন তবে সবচেয়ে ভাল কাজটি হ'ল নিম্নলিখিতটি সন্ধান এবং প্রতিস্থাপন যদি আপনার ফাইলে থাকে তবে:

  • utf8mb4_0900_ai_ci প্রতি utf8_unicode_ci
  • utf8mb4 প্রতি utf8
  • utf8_unicode_520_ci প্রতি utf8_unicode_ci

এটি প্রতিস্থাপন utf8mb4_unicode_ciকরা হবে utf8_unicode_ci। এখন আপনি আপনার পিএইচপিএমওয়াই অ্যাডমিন সিপানেল এ যান এবং অপারেশনস> কোলেশনutf8_unicode_ci মাধ্যমে ডিবি কোলেশন সেট করেন ।

আপনি যদি কোনওতে রফতানি .sqlকরছেন তবে আপনি কীভাবে ফাইলটি রফতানি করছেন সেটির ফর্ম্যাটটি পরিবর্তন করা ভাল। পরীক্ষা করে দেখুন Evster এর আনোয়ার (এটা এই একই পৃষ্ঠায় আছে)


2
এটা এই এক সঙ্গে বরাবর পুরোপুরি কাজ করছে stackoverflow.com/a/30694416/1022726
iurii

সব আপনি UNIX ভাবেন জন্য: sed -i.bak s/utf8mb4/utf8/g FILE_NAME। এটি utf8mb4FILE_NAME এর সমস্ত উপস্থিতি খুঁজে পেতে এবং এটিকে utf8ফাইলের অনুলিপি FILE_NAME.bak এ সংরক্ষণ করার সাথে প্রতিস্থাপন করবে । আপনার ক্ষেত্রে সঠিক জোটটি নির্দিষ্ট করতে আপনাকে এটির জন্য
টুইঙ্ক

1
আমাকেও প্রতিস্থাপন করতে হয়েছিল: utf8_unicode_520_ci এর সাথে: utf8_unicode_ci
নিক নদী

অথবা মাধ্যমে ষষ্ঠ: vi dump.sqlএবং তারপর মাধ্যমে এই কাজ: :%s/uf8mb4/utf8/g
ভ্যালেন্টিন গ্রোগোয়ার

2
এবং প্রতিস্থাপন utf8_0900_ai_ciসঙ্গেutf8_unicode_ci
ইরফান Yusanif

44

আমি এটি লিনাক্সে ব্যবহার করি:

sed -i 's/utf8mb4/utf8/g' your_file.sql
sed -i 's/utf8_unicode_ci/utf8_general_ci/g' your_file.sql
sed -i 's/utf8_unicode_520_ci/utf8_general_ci/g' your_file.sql

তারপরে আপনার_ফিল.এসকিউএল পুনরুদ্ধার করুন

mysql -u yourdBUser -p yourdBPasswd yourdB < your_file.sql

1
অন্য উত্তরে একটি মন্তব্য আছে, যা এখানে পুনরাবৃত্তি করে। সিডের ওএস এক্স সংস্করণে -i পতাকার পরে অতিরিক্ত যুক্তি লাগবে। তাই sed -i '' ....কাজ করে।
কেন্ট

2
আমাকে sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql
মাইকেল হেজে

28

ওয়ার্ডপ্রেস ৪.২ সুরক্ষার কারণে "utf8mb4" অক্ষর এনকোডিংয়ের জন্য সমর্থন প্রবর্তন করেছে , তবে কেবল মাইএসকিউএল 5.5.3 এবং এর চেয়ে বেশি সমর্থন করে। ইনস্টলার (এবং আপডেটেটর) যেভাবে এটি পরিচালনা করে তা হ'ল এটি আপনার মাইএসকিউএল সংস্করণটি পরীক্ষা করে এবং আপনার ডাটাবেসটি কেবল সমর্থিত হলেই utfmb4 এ আপগ্রেড করা হবে

এটি তাত্ত্বিকভাবে দুর্দান্ত শোনায় তবে আপনি যখন কোনও মাইএসকিউএল সার্ভার থেকে ডেটাবেসগুলি মাইগ্রেট করছেন যা utf8mb4 কে সমর্থন করে না এমন একটিতে রূপান্তর করে the অন্য উপায়ে কাজ করা উচিত, এটি মূলত একমুখী অপারেশন।

হিসাবে Evster দ্বারা নির্দিষ্ট আপনি পারে phpMyAdmin এর "রপ্তানি" বৈশিষ্ট্য ব্যবহার করে সাফল্য আছে। " এক্সপোর্ট পদ্ধতি: কাস্টম " এবং " ডেটাবেস সিস্টেম বা পুরানো মাইএসকিউএল সার্ভারের সাথে আউটপুট সামঞ্জস্যতা সর্বাধিক করতে: " ড্রপডাউনটি " এমওয়াইএসকিউএল 40 " নির্বাচন করুন ।

Mysqldump ব্যবহার করে কমান্ড লাইন রফতানির জন্য। পতাকাটি দেখুন:

$ mysqldump --compatible=mysql4

দ্রষ্টব্য: ডাটাবেসে যদি কোনও 4-বাইট অক্ষর থাকে তবে সেগুলি দূষিত হবে।

শেষ অবধি, জনপ্রিয় ডাব্লুপি মাইগ্রেট ডিবি প্রো প্লাগইন ব্যবহার করে এমন কারও জন্য, এই ওয়ার্ডপ্রেস.আর্গ থ্রেডের একজন ব্যবহারকারী রিপোর্ট করেছেন যে মাইগ্রেশনটি সর্বদা সঠিকভাবে পরিচালিত হয় তবে আমি কোনও অফিসিয়াল খুঁজে পাইনি।

ডাব্লুপি মাইগ্রেট ডিবি প্লাগইন একটি কোলেশন থেকে অন্য কোলেশন ডাটাবেস অনুবাদ করে যখন এটি প্রাক-বা পোস্ট -5.5.3 মাইএসকিউএল সহ হোস্টের মধ্যে 4.2 সাইটগুলি সরিয়ে দেয়

এই সময়ে, ডাটাবেস আপডেট থেকে বেরিয়ে আসার কোনও উপায় বলে মনে হচ্ছে না। সুতরাং আপনি যদি কোনও ওয়ার্কফ্লো ব্যবহার করছেন যেখানে আপনি কোনও সার্ভার বা লোকালহোস্ট থেকে কোনও সাইট মাইএসকিউএল> 5.5.3 এর সাথে পুরানো মাইএসকিউএল সংস্করণ ব্যবহার করে এমন কোনও জায়গায় স্থানান্তর করছেন you


"এমওয়াইএসকিউএল 40" এর সাথে সামঞ্জস্যতা পরিবর্তন করা আমার পক্ষে পুরোপুরি কাজ করেছিল।
ক্যারেন গিল

3
এরপরে যদি আপনি কোনও পোস্ট v5.5.3 ডাটাবেসে mysql4 সামঞ্জস্যপূর্ণ ডাম্পটি চেষ্টা করে আমদানি করেন (আমি 5.5.28 ব্যবহার করছি) তবে এটি ব্যর্থ হয় কারণ স্ক্রিপ্টটিতে v5.1- TYPE=MyISAMএ সরানো ছিল। একটি অনুসন্ধান করুন এবং এর সাথে প্রতিস্থাপন করুন ENGINE=MyISAMmysqldumpআউটপুট বিকল্পগুলি ব্যবহার করে আমি এর আশেপাশে কোনও উপায় দেখতে পেলাম না ।
icc97

26

আমার ক্ষেত্রে দেখা যাচ্ছে যে আমার
নতুন সার্ভারটি চালু ছিল MySQL 5.5,
পুরানো সার্ভার চলছিল MySQL 5.6
আমি .sqlআমার পুরানো সার্ভার থেকে রফতানি করা ফাইলটি আমদানির চেষ্টা করার সময় আমি এই ত্রুটিটি পেয়েছি ।

মাইএসকিউএল 5.5 সমর্থন করে না utf8mb4_unicode_520_ci, তবে
মাইএসকিউএল 5.6 দেয়।

MySQL 5.6নতুন সার্ভারে আপডেট করার ফলে ত্রুটি সমাধান করা যায়!

আপনি যদি মাইএসকিউএল 5.5 বজায় রাখতে চান তবে আপনি:
- আপনার রফতানি করা .sqlফাইলটির একটি অনুলিপি তৈরি করতে পারেন
- এর উদাহরণগুলি utf8mb4unicode520_ciএবং utf8mb4_unicode_520_ci
... এর সাথে প্রতিস্থাপন করুন - utf8mb4_unicode_ci
আপনার আপডেট হওয়া .sqlফাইলটি আমদানি করুন।


1
হ্যাঁ - 5.6 এ আপলোড করা এটির সহজ সমাধান (এবং উবুন্টুর একটি mysql-server-5.6প্যাকেজ রয়েছে যা আপনি ইনস্টল করতে পারেন যা আপনার জন্য স্বয়ংক্রিয়ভাবে 5.5 সরিয়ে ফেলবে)।
উইলিয়াম তারেল

15

Wp-config.php এ একটি লাইন রয়েছে:

define('DB_CHARSET', 'utf8mb4');

আপনি যদি মার্কুভারের / ইভাস্টারের নির্দেশাবলী অনুসরণ করেন তবে প্রোডাকশন সার্ভারে এই লাইনটি পরিবর্তন করতে ভুলবেন না

define('DB_CHARSET', 'utf8');

ভাঙা 4-বাইট অক্ষর ঠিক করার জন্য


1
define('DB_COLLATE', 'utf8_general_ci');পাশাপাশি পরিবর্তন করতে ভুলবেন না । এটি আমার পক্ষে সাহায্য করেছিল।
আবদুহফিজ

10

দীর্ঘ সময় গবেষণার পরে আমি উপরের সমাধানটি খুঁজে পেয়েছি:

  1. প্রথমত আপনি wp-config.php> ডাটাবেস ডিবি_ CHARSET ডিফল্টটিকে "utf8" এ পরিবর্তন করেন

  2. ডাটাবেসের জন্য "রফতানি" ট্যাবে ক্লিক করুন

  3. "কাস্টম" রেডিও বোতামটি ক্লিক করুন

  4. "ফর্ম্যাট-নির্দিষ্ট বিকল্পগুলি" শিরোনামে বিভাগে যান এবং "ডাটাবেস সিস্টেম বা পুরানো মাইএসকিউএল সার্ভারের সাথে আউটপুট সামঞ্জস্যকে সর্বাধিক করতে:" নন থেকে এমওয়াইএসকিউএল 40 এ ড্রপডাউন পরিবর্তন করুন।

  5. নীচে স্ক্রোল করুন এবং যান ক্লিক করুন

তারপরে আপনি চালু


7

দেখে মনে হচ্ছে আপনার হোস্টটি কোনও মাইএসকিউএল-সংস্করণ সরবরাহ করে না যা utf8mb4 কোলেশন সহ টেবিল চালাতে সক্ষম।

ইমোজিস সমর্থন করার জন্য ওয়ার্ডপ্রেস টেবিলগুলি সংস্করণ 4.2 (এপ্রিল, 23 শে 2015 এ প্রকাশিত) এর সাথে utf8mb4 এ পরিবর্তন করা হয়েছিল, তবে এটি ব্যবহারের জন্য আপনার মাইএসকিউএল 5.5.3 প্রয়োজন need 5.5.3। 2010 সালের মার্চ থেকে তাই এটি সাধারণত বহুলভাবে উপলভ্য হওয়া উচিত। আপনার হোস্টার সেই সংস্করণটি সরবরাহ করে কিনা তা পরীক্ষা করে দেখুন?

যদি না হয় এবং একটি আপগ্রেড সম্ভব না হয় তবে সর্বশেষতম ওয়ার্ডপ্রেস সংস্করণ চালানোর জন্য আপনাকে অন্য হোস্টারের সন্ধান করতে হবে (এবং সুরক্ষার কারণে আপনার সর্বদা এটি করা উচিত)।


1
আপনি মাইএসকিউএল এর সংস্করণটি "মাইএসকিএল-ভি"
এড স্মিথ

2

সুতরাং আমি এইভাবে মাইএসকিউএল 5.6 থেকে মাইএসকিউএল 5.5 পর্যন্ত সমাধান করেছি:

$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql
$ sed -i 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql

(Alচ্ছিক) একটি .sql.gzফাইল তৈরি করুন:

$ gzip database_name.sql 

ব্যাখ্যা

$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql

এই উত্তরে বর্ণিত হিসাবে , এটি পিএইচপিএমইএডমিন থেকে এই বিকল্পগুলির সমতুল্য: "ডাটাবেস সিস্টেম বা পুরানো মাইএসকিউএল সার্ভারের সাথে আউটপুট সামঞ্জস্যতা সর্বাধিক করতে:" ড্রপডাউন "এমওয়াইএসকিউএল 40" নির্বাচন করুন

$ sed -i 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql

এই সমস্যাটি সমাধান করার জন্য আমাদের এটি দরকার:

লাইন 18 এ 1010 (42000) এর ত্রুটি: আপনার এসকিউএল সিন্টেক্সে আপনার একটি ত্রুটি রয়েছে; 9 ম লাইনে 'TYPE = InnoDB' এর কাছাকাছি ব্যবহার করতে ডান সিনট্যাক্সের জন্য আপনার মাইএসকিউএল সার্ভার সংস্করণের সাথে সম্পর্কিত ম্যানুয়ালটি পরীক্ষা করুন


1
নোট আপনি sed এর OS X এর এর সংস্করণ ব্যবহার করছেন যদি: $ sed -i'' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sqldatabase_name.sql.bakসিড প্রতিস্থাপনের আগে আপনি যদি একটি অনুলিপি রাখতে চান :$ sed -i'bak' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
জাস্টিন ফরটিয়ার

আপনি ইনলাইন করতে পারেন sed
ডেভিডবিটন

এছাড়াও আপনি যদি মাইএসকিউএল 8 এ মাইএসকিলডাম্প চালাচ্ছেন তবে আপনাকে --compatible=ansiবিকল্পটি ব্যবহার করতে হবে
অ্যাবস্ট্রাকভয়েড

1

আমি এই সমস্যাটিও অনুভব করেছি। সমাধান যা আমাকে স্থানীয় ডাটাবেসের সঙ্গে খোলার সময় কাজ পরিশিষ্টদায়্ক প্রো এবং আপডেট এনকোডিং এবং কোলেশন আমদানি করার আগে প্রতিটি টেবিলের জন্য UTF8 / utf8_bin করতে।


1

সবচেয়ে সহজ পদ্ধিতি হল উপায় আপনার ডাটাবেস রপ্তানি হয় .sqlনোটপ্যাড ++, উপর, খুলতে এটি এবং "অনুসন্ধান এবং প্রতিস্থাপন করুন" utf8mb4_unicode_ciথেকে utf8_unicode_ciএবং প্রতিস্থাপন utf8mb4করতে utf8। এছাড়াও utf8_unicode_ci(অপারেশনস> কোলেশন) ডাটাবেস কোলেশন পরিবর্তন করতে ভুলবেন না ।


0

নোটপ্যাড ++ এ এসকিএল ফাইলটি খুলুন এবং ctrl + H. তারপরে আপনি utf8mb4অনুসন্ধানে " utf8" এবং প্রতিস্থাপনের জন্য " " রেখেছিলেন । বিষয়টি তখন ঠিক হয়ে যাবে।


এটি "অজানা
সমঝোতা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.