سؤال

على المستوى المحلي أقوم بذلك لتفريغ ونقل قاعدة بيانات ، وترقية SilversTripe 2.3 إلى 2.4:

mysqldump --opt  --default-character-set=latin1 --skip-set-charset --user=$root -p$password $oldDatabase -r db.sql  

iconv -f LATIN1 -t UTF8 db.sql > db_utf.sql 


CREATE DATABASE $newDatabase CHARACTER SET utf8 COLLATE utf8_swedish_ci; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON $newDatabase . * TO '$newUser'@'localhost';  FLUSH PRIVILEGES;
SET NAMES utf8; SOURCE db_utf.sql;

وهو يعمل ، ولكن على الخادم Ubuntu 8.04 ، مع MySQL ver 14.12 Distrib 5.0.51a. أحصل على مجنونة مستأجرون بدلاً من Øæåøæå.

أي شخص يعرف أين أخطأت؟

هل كانت مفيدة؟

المحلول 3

هذا إصلاح القضية بالنسبة لي.

  1. استيراد المدخلات المشفرة المزدوجة.

  2. قم بتصديره مرة أخرى mysqldump -h "$DB_HOST -u "$DB_USER" -p"$DB_PASSWORD" --opt --quote-names --skip-set-charset --default-character-set=latin1 "$DB_NAME" > output.sql

  3. استيراد الإخراج النظيف. SQL

كيفية استعادة قاعدة البيانات المزدوجة المشفرة بواسطة MySqLdump

نصائح أخرى

حاول الركض مع الأمر التالي:

mysqldump -u root -p database -r output.sql

بدلاً من إعادة توجيه الإخراج بالسهم ">"

استغرق الأمر مني يومين لأكتشف أن لدي نفس المشكلة وحلها عند محاولة تصدير قاعدة بيانات باللغة العربية باستخدام MySqLdump وفي كل مرة تفتح فيها إخراج Forting في Notepad ++ ، يكون ترميزه في ANSI وتحتاج إلى أن يكون UTF-8 MY كان رمز التصدير والاستيراد على النحو التالي ، كما اتضح أنني كنت على صواب ، لكنني كنت أتحقق من قاعدة البيانات على المحطة ، لكن المحطة لا تدعم الترميز وحاولت فقط التحقق من ذلك مع phpmyadmin ومن الجيد أن تحاول فتح الملف في Notepad ++ أو فقط جرب التطبيق الخاص بك مباشرة سيعمل.

أمر التصدير

mysqldump -uuser -ppassword --default-character-set=utf8 dbname > outputfile //or even if you use -r instead of > no difference

أمر الاستيراد mysql -uuser -ppassword --default-character-set=utf8 dbname < outputfille // please take in mind this does override existing database

من المهم جدًا التأكد من تعيين العميل على UTF8. بشكل مربك ، ليس هو نفسه تعيين قاعدة البيانات الخاصة بك على UTF8. open /etc/my.cnf وتأكد من أن لديك charracter-set = utf8 ضمن [mysql] ليس فقط تحت [mysqld

الآن يجب أن تكون قادرًا على تنشيط مقالب UTF8 مباشرة في عميل MySQL. أوصي أيضًا باستخدام الخيار-Hex-Blob على أمر MySqLdump لأن MySqLdump ليس مثاليًا.

أنا نجح على النحو التالي:

mysql --default-character-set=utf8 -u ..

قد يساعدك هذا.

هل جربته بدون iconv خطوة؟

إليك ما أستخدمه عند إلقاء قواعد بيانات UTF-8:

mysqldump \
    -u $DB_USER -p"$DB_PASS" \
    --default-character-set=Latin1 \
    --result-file=$DATAFILE

واستعادة:

mysql -u $DB_USER -p"$DB_PASS" \
    --default-character-set=latin1 < $DATAFILE

ربما فقط نسخ الجداول إلى $ newDatabase كـ LATIN1. ثم ، لكل جدول ، تنفذ:

ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_swedish_ci

الطريقة الوحيدة التي نجحت بالنسبة لي هي تصدير جداول UTF-8 كـ LATIN-1 (مجموعة أحرف الملف: ISO-8859-1) في phpmyadmin.

افتح الملف المصدر في Notepad ++ تحويل إلى UTF8 (مع BOM)

ثم تحميل الملف واستيراد مع المصدر Dump.sql.

هذا عمل بالنسبة لي:

  1. SSH الخادم واتصل.
  2. إنشاء تشغيل DB DUMP

mysqldump -h my_guid.cloud.database.com -u my_user -p my_database_name -r ~/my_db_backup.sql

ستطالبك وحدة التحكم وتطلب كلمة المرور ، ويمكنك كتابتها ، وكان لدى PWD أحرف خاصة لذلك تمكنت من تشغيل هذا الأمر بسهولة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top