পূর্বে, আমি এটি ব্যবহার:
USE dbname;
ALTER TABLE tablename ENGINE=MYISAM;
আমি প্রতিটি টেবিলের নাম এক এক করে লেখার চেয়ে ডাটাবেসে সমস্ত টেবিলকে রূপান্তর করার সহজতর উপায়টি খুঁজছি
পূর্বে, আমি এটি ব্যবহার:
USE dbname;
ALTER TABLE tablename ENGINE=MYISAM;
আমি প্রতিটি টেবিলের নাম এক এক করে লেখার চেয়ে ডাটাবেসে সমস্ত টেবিলকে রূপান্তর করার সহজতর উপায়টি খুঁজছি
উত্তর:
আমি নিজেই এটি মাইএসকিএলে করার কোনও উপায় সম্পর্কে অবগত নই, তবে একটি সাধারণ শেল স্ক্রিপ্ট কাজটি করবে:
TABLES=$(mysql -pXXXXXXX -uXXXXXXX --skip-column-names -B -D $DB -e 'show tables')
for T in $TABLES
do
mysql -pXXXXX -uXXXXX -D $DB -e "ALTER TABLE $T ENGINE=MYISAM"
done
আপনি এটি স্ক্রিপ্ট করতে এবং এটি কার্যকর করতে মাইএসকিউএল ব্যবহার করতে পারেন:
dbname
প্রতিটি ইনোডিবি টেবিলকে মাইআইএসএমে রূপান্তর করবেCONVERT_SCRIPT=Convert_dbname_InnoDB_to_MyISAM.sql
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE table_schema='dbname' AND engine='InnoDB';" > ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
CONVERT_SCRIPT=Convert_InnoDB_to_MyISAM.sql
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE engine ='InnoDB';" > ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
আপনি যদি না চান তবে সারণীর টেবিলগুলির রূপান্তরটি স্ল্যাভে প্রতিলিপি করা উচিত, কেবল SET SQL_LOG_BIN=0;
প্রথম লাইন হিসাবে রেখে দিন। এইভাবে, আপনি প্রথমে কেবল স্লেভ এবং পরে মাস্টারকে রূপান্তর করে মাস্টার / স্লেভ সেটআপে রূপান্তরটি পরীক্ষা করতে পারেন।
dbname
মাইআইএসএএম-তে রূপান্তর করবে এবং অন্যান্য সার্ভারে প্রতিলিপি দেবে নাCONVERT_SCRIPT=Convert_dbname_InnoDB_to_MyISAM.sql
echo "SET SQL_LOG_BIN=0;" > ${CONVERT_SCRIPT}
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE table_schema='dbname' AND engine='InnoDB';" >> ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
CONVERT_SCRIPT=Convert_InnoDB_to_MyISAM.sql
echo "SET SQL_LOG_BIN=0;" > ${CONVERT_SCRIPT}
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MyISAM;') FROM information_schema.tables WHERE engine ='InnoDB';" >> ${CONVERT_SCRIPT}
mysql -u... -p... -A < ${CONVERT_SCRIPT}
একবার চেষ্টা করে দেখো !!!
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
no_zero_date বাইপাস কোথাও থেকে MySQL 5.7 - উত্স stackoverflow.com/questions/9192027/...
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
no_zero_date বাইপাস কোথাও থেকে MySQL 5.7 - উত্স stackoverflow.com/questions/9192027/...
যাদের এখনও এই সমস্যা রয়েছে, আপনি এটি করার জন্য এই উপায়টি অনুসরণ করতে পারেন, আমি এই উত্তরটি একটি ওয়েবসাইটে পেয়েছি। এটা আমাকে অনেক সাহায্য করেছে:
shell> mysql -u username -p -e "SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=MYISAM;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'db_name' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'" | tail -n+2 >> alter.sql
আপডেট username
এবং db_name
আপনার নিজস্ব মান সঙ্গে মান।
স্ক্রিপ্টটি কার্যকর করে, এটি নামের অধীনে একটি ফাইল সংরক্ষণ করবে: alter.sql
ফাইলটি খুলুন এবং আপনার phpmyadmin
বা mysql
কমান্ড লাইনে থাকা বিষয়বস্তুটি কার্যকর করুন ।
চিয়ার্স!