mysqldump واستعادة مع شخصيات خاصة. Øæåøæ
-
01-10-2019 - |
سؤال
على المستوى المحلي أقوم بذلك لتفريغ ونقل قاعدة بيانات ، وترقية 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
هذا إصلاح القضية بالنسبة لي.
استيراد المدخلات المشفرة المزدوجة.
قم بتصديره مرة أخرى
mysqldump -h "$DB_HOST -u "$DB_USER" -p"$DB_PASSWORD" --opt --quote-names --skip-set-charset --default-character-set=latin1 "$DB_NAME" > output.sql
استيراد الإخراج النظيف. 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.
هذا عمل بالنسبة لي:
- SSH الخادم واتصل.
- إنشاء تشغيل DB DUMP
mysqldump -h my_guid.cloud.database.com -u my_user -p my_database_name -r ~/my_db_backup.sql
ستطالبك وحدة التحكم وتطلب كلمة المرور ، ويمكنك كتابتها ، وكان لدى PWD أحرف خاصة لذلك تمكنت من تشغيل هذا الأمر بسهولة