[PHP+MySQL] Disable SQL strict mode

เนื่องด้วย Develop PHP web apps ใน localhost แล้ว Upload ขึ้น Hosting PHP 7 + MariaDB 10

เมื่อทำการสดทอบ Insert ข้อมูลแล้วมีค่าว่างทำให้เกิด Error  #1366 – Incorrect integer value: ” for column ‘column name’ at row 1

เพิ่มคำสั่ง Query ในไฟล์ connectdb.php หลังคำสั่งติดต่อฐานข้อมูล

mysqli_query(“SET @@sql_mode = ””);
mysqli_query(“SET SESSION sql_mode = ””);
mysqli_query(“SET @@GLOBAL.sql_mode = ””);
Upload ขึ้น Hosting ก็สามารถ Insert ข้อมูลเข้าไปได้แล้ว
 

Copying MySQL Databases to Another Machine

#mysqladmin -h other_hostname create db_name

#mysqldump db_name | mysql -h other_hostname db_name

หาก Network ช้า ให้ใช้คำสั่ง

#mysqladmin create db_name

#mysqldump -h other_hostname –compress db_name | mysql db_name

 

Credit : https://dev.mysql.com/doc/refman/5.7/en/copying-databases.html

 

วิธีแก้ mysql-bin.000xx ทำพื้นที่เก็บเต็ม และแก้ Slave error relay log ไม่ Replicate

Database จะสร้างไฟล์ mysql-bin.000xxx เป็น log เก็บข้อมูลการทำงานขึ้นมาเรื่อยๆ ทำให้พื้นที่เต็ม 100% ได้  ให้ทำการ login เข้าระบบและใช้คำสั่ง ที่เครื่อง Master

> mysql -u root -p

> flush logs; เพื่อให้ mysql สร้าง log สุดท้ายขึ้นมา

> show master status; เพื่อดู mysql-bin.000xxx ล่าสุด

> purge binary logs to ‘mysql-bin.000xx’; ชื่อไฟล์ล่าสุด

เมื่อทำการ flush ที่เครือง master เสร็จเรียบร้อยแล้ว เช็คที่เครื่อง Slave หาก Error LOG Replicate ให้ทำการ login เข้าระบบและใช้คำสั่งที่เครื่อง Slave

> mysql -u root -p

> show slave status\G;  ตรวจสอบ Error Log Relay

> stop slave; ทำการปิดระบบ replicate ข้อมูล

> reset slave; รีเซ็ตการดึง mysql-bin.000xxx จาก master ใหม่

> change master to master_log_file=’mysql-bin.00xxx’, master_log_pos=;  นำ master_log_file และ master_log_pos ล่าุสดจากเครื่อง master มาใส่

> start slave; เพื่อทำการเปิดระบบ replicate ข้อมูล

Fix Success

 

[MySQL] การ copy multi database ไปอีกเครื่อง Server นึง

           การ Copy database จากอีกเครื่อง server นึง ไปอีก Server นึง บางทีเราต้องใช้เวลามานั่ง copy ทีละฐานข้อมูลไปทำให้เสียเวลา

shell> mysqldump –all-databases -uuser -ppassword | mysql -hremoteserver -uremoteuser -premoteserver

ตัวอักษรสีเขียวคือที่ต้องแก้ไขเป็นข้อมูลของ Server

  • User  : username ของ MySQL เครื่อง Server หลักที่จะทำการ Copy
  • Password  : password ของ MySQL เครื่อง Server หลักที่จะทำการ Copy
  • Remoteserver : ที่อยู่ของเครื่อง Server เครื่องที่จำทำการ Copy Database ไป ยกตัวอย่างเช่น IP 10.0.0.2
  • Remoteuser : username ของ MySQL เครื่อง Server ที่จะทำการ Copy ไปใส่
  • Remoteserver : password ของ MySQL เครื่อง Server ที่จะทำการ Copy ไปใส่

ตัวอย่างคำสั่ง

shell> mysqldump –all-databases -umyroot -pmypassword | mysql -h10.0.0.2 -umyroot       -pmypassword

 

หากต้องการแค่บาง Database ให้ใช้คำสั่ง

shell> mysqldump –databases database1 database2 database3 -umyroot -pmypassword | mysql -h10.0.0.2 -umyroot       -pmypassword