เปรียบเทียบฐานข้อมูล MySQL สองแห่ง [ปิด]


368

ขณะนี้ฉันกำลังพัฒนาแอปพลิเคชันโดยใช้ฐานข้อมูล MySQL

โครงสร้างฐานข้อมูลยังคงอยู่ในฟลักซ์และการเปลี่ยนแปลงในขณะที่การพัฒนาดำเนินไป

มีวิธีการเปรียบเทียบสองอินสแตนซ์ของฐานข้อมูลเพื่อดูว่ามีการเปลี่ยนแปลงหรือไม่?

ในขณะที่การทิ้งฐานข้อมูลเซิร์ฟเวอร์ทดสอบก่อนหน้านั้นทำได้ค่อนข้างดีในขณะที่การทดสอบเริ่มป้อนข้อมูลทดสอบอาจทำให้ยุ่งยากเล็กน้อย
เหมือนกันมากขึ้นดังนั้นจะเกิดขึ้นอีกในภายหลังในการผลิต ...

มีวิธีง่ายๆในการเปลี่ยนแปลงฐานข้อมูลการผลิตเพิ่มเติมโดยเฉพาะอย่างยิ่งโดยการสร้างสคริปต์เพื่อแก้ไขหรือไม่


เครื่องมือที่กล่าวถึงในคำตอบ:


4
ฉันเชื่อว่าเครื่องมือของ RedGate นั้นใช้สำหรับ SQL Server เท่านั้น
เดฟอาร์

4
ขณะนี้ Red Gate มีรุ่น MySQL และฟรีในขณะนี้เนื่องจากสามารถเข้าถึงได้เร็วขึ้น: red-gate.com/products/MySQL_Compare/index.htm
David Atkinson

2
มันเป็นปัญหาที่แท้จริง ฉันปรับใช้จาก dev ไปยังเครื่องผลิตและมันก็แบ่งบางสิ่งบางอย่างเสมอ ขอบคุณสำหรับข้อมูลที่โพสต์นี้
Herr

1
เครื่องมือ MySQL จาก Redgate อยู่ที่ $ 70 / ผู้ใช้ แม้ในราคานั้นฉันจะประเมินและโพสต์ความคิดเห็นที่นี่
Jeremy McGee

ยังต้องการสิ่งนี้เพียงแค่ตอนนี้ต้องเพิ่มขนาดของเขตข้อมูล ไม่ต้องการเพิ่มแค่นี้และสงสัยว่าทุกอย่างก็โอเค @ Jared แนะนำสิ่งที่ฉันใช้อย่างแน่นอน
Tass

คำตอบ:


210

หากคุณกำลังทำงานกับฐานข้อมูลขนาดเล็กฉันพบว่ากำลังเรียกใช้ mysqldump บนฐานข้อมูลทั้งสองด้วย--skip-commentsและ--skip-extended-insertตัวเลือกในการสร้างสคริปต์ SQL จากนั้นการทำงานต่างกับสคริปต์ SQL จะทำงานได้ค่อนข้างดี

โดยการข้ามความคิดเห็นคุณหลีกเลี่ยงความแตกต่างที่ไม่มีความหมายเช่นเวลาที่คุณรันคำสั่ง mysqldump โดยใช้--skip-extended-insertคำสั่งคุณมั่นใจได้ว่าแต่ละแถวจะถูกแทรกด้วยคำสั่งแทรกของตัวเอง สิ่งนี้จะช่วยกำจัดสถานการณ์ที่ระเบียนใหม่หรือที่แก้ไขแล้วสามารถทำให้เกิดปฏิกิริยาลูกโซ่ในงบแทรกในอนาคตทั้งหมด การรันด้วยตัวเลือกเหล่านี้จะทำให้เกิดการทิ้งขยะขนาดใหญ่โดยไม่มีความเห็นดังนั้นนี่อาจไม่ใช่สิ่งที่คุณต้องการใช้ในการใช้งานจริง แต่สำหรับการพัฒนามันควรจะดี ฉันใส่ตัวอย่างของคำสั่งที่ใช้ด้านล่าง:

mysqldump --skip-comments --skip-extended-insert -u root -p dbName1>file1.sql
mysqldump --skip-comments --skip-extended-insert -u root -p dbName2>file2.sql
diff file1.sql file2.sql

12
เพิ่มทวีคูณสองเท่าสำหรับการรู้หนังสือบรรทัดคำสั่ง !!!
dogenpunk

5
ในการเปรียบเทียบข้อมูลให้ใช้สิ่งนี้แทน ยังคงมีข้อคิดเห็นบางอย่างของ MySQL4 + เกี่ยวกับชุดตัวละครและอื่น ๆmysqldump --opt --compact --skip-extended-insert -u user -p db table > file.sql
zanlok

41
-d, --no-dataอาจจะเป็นที่สนใจของผู้ที่ต้องใช้ในการผลิต แต่เพียงดูแลเกี่ยวกับสคี
หลุยส์

7
เครื่องมือที่ดีกว่าสำหรับการใช้งานคือยูทิลิตีmysqldbcompare ที่พัฒนาโดย MySQL ซึ่งคุณสามารถใช้บน Windows, Linux หรือ Mac - มันยังสามารถแสดงผลคำสั่ง SQL สำหรับทั้งข้อมูลและ schema ที่เปลี่ยนแปลงและทำการทดสอบมากกว่าบรรทัดคำสั่งธรรมดาที่แตกต่างกัน กำหนด
Jasdeep Khalsa

4
เพื่อความแตกต่างที่ดีกับสีลองvimdiff
gitaarik

99

คางคกสำหรับ MySQLมีข้อมูลและสคีมาเปรียบเทียบคุณสมบัติและฉันเชื่อว่ามันจะสร้างสคริปต์การซิงโครไนซ์ เหนือสิ่งอื่นใดมันเป็นฟรีแวร์


2
เครื่องมือทั้งหมดที่กล่าวมาดูดี ฉันเลือกคางคกโดยพลการจนกระทั่งฉันสามารถทำการวิจัยเพิ่มเติมได้
Vincent Ramdhanie

64
ฉันตื่นเต้นกับเครื่องมือนี้จนกระทั่งฉันรู้ว่ามันทำงานบน windows ไม่ใช่ linux กลับไปค้นหา ...
jdias

2
ทำงานที่ยอดเยี่ยมสำหรับฉัน ทุกสิ่งที่ฉันต้องการให้ทำและเซลล์ที่เน้นสีสำหรับบันทึกที่มีการเปลี่ยนแปลงทำให้ง่ายต่อการดูสิ่งที่เปลี่ยนแปลง
แม่น้ำเทมส์

4
mysqldbcompare พร้อมกับ--run-all-tests --difftype sql --disable-binary-loggingตัวเลือกต่าง ๆ สามารถทำงานได้เกือบเหมือนกัน (ยกเว้นเอาท์พุทผสมกับความคิดเห็นและอักขระพิเศษในสตริงจะไม่หนีออกมา)
schemacs

4
@Anson Smith ช่วยบอกทางเลือกให้ linux หน่อยได้ไหม?
Visruth

20

ฉันใช้ซอฟต์แวร์ชื่อNavicatเพื่อ:

  • ซิงค์ฐานข้อมูล Live กับฐานข้อมูลทดสอบของฉัน
  • แสดงความแตกต่างระหว่างฐานข้อมูลทั้งสอง

มันมีค่าใช้จ่ายมันคือ windows และ mac เท่านั้นและมันมี UI ที่แปลกประหลาด แต่ฉันชอบ


มันทำงานบน Linux ฉันเปิดมันบนเดสก์ท็อปเครื่องอื่นในขณะนี้ คุณสมบัติการซิงค์โครงสร้างเพื่อผลักดันการเปลี่ยนแปลงสคีมาจาก dev-> test-> live นั้นมีค่าสำหรับค่าลิขสิทธิ์เพียงอย่างเดียว
พันเอก Sponsz

2
เยี่ยมมากฉันไม่รู้ด้วยซ้ำว่ามันมีคุณสมบัติเหล่านั้น มันเป็นสิ่งที่ดีที่สุดบนเครื่องแมคจนถึงตอนนี้
Hendra Uzia

ดูเหมือนว่าจะเปรียบเทียบเฉพาะฐานข้อมูลที่อยู่บนเซิร์ฟเวอร์ไม่ใช่ไฟล์ sql ดั้งเดิม
AlxVallejo

@ seanyboy ทำไมคุณถึงชอบ whacky UI?
Pacerier

17

มีเครื่องมือทำข้อมูลให้ตรงกัน Schema ในSQLyog (เชิงพาณิชย์) ซึ่งสร้าง SQL สำหรับการทำข้อมูลให้ตรงกันทั้งสองฐานข้อมูล

ป้อนคำอธิบายรูปภาพที่นี่


1
อ๋อนี่เป็นทางออกที่ดีที่สุดสำหรับฉันจนถึงตอนนี้ให้แบบสอบถาม SQL sync ที่ดีเพื่อให้คุณสามารถอัปเดตได้ทุกที่ทุกเวลา ..
Anupam

แพงเกินไปและหนัก, ไม่ดีสำหรับการปะ
แก้

1
ช้ามากและด้วยเหตุผลบางอย่างมันจะดรอปและสร้างคีย์ต่างประเทศจำนวนมากแม้ว่าจะไม่จำเป็นก็ตาม ไม่มีวิธีการติดตามความคืบหน้า
Artem Goutsoul

13

จากรายการเปรียบเทียบคุณลักษณะ ... MySQL Workbenchเสนอ Schema Diff และ Schema Synchronization ในชุมชนของพวกเขา


7
ใช้งานได้ดี! และมันฟรีขอบคุณ สำหรับคนที่หาไม่เจอ (Like me) อยู่ที่นี่: ฐานข้อมูล -> Reverse Engineer -> ใน MySQL Model หรือ EER Diagram -> ฐานข้อมูล -> ประสานกับแหล่งใดก็ได้
bentzy

มันทำงานได้ดี อย่างไรก็ตามคุณสามารถเปรียบเทียบฐานข้อมูลที่มีชื่อเดียวกันเท่านั้น ฉันมีฐานข้อมูลหลาย (ไคลเอนต์ผู้เช่าหลาย) ฉันต้องการซิงค์จากรุ่น "ต้นแบบ" บนโฮสต์เดียวกัน ดังนั้นฉันต้องเปลี่ยนชื่อต้นแบบเพื่อให้ตรงกับฐานข้อมูลลูกค้าแต่ละรายก่อนทำการซิงค์ ดีอย่างอื่น!
scipilot

ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้สามารถพบได้ในลิงค์
Steven Ryssaert

13

มีหลายวิธีอย่างแน่นอน แต่ในกรณีของฉันฉันชอบคำสั่ง dump และ diff ดังนั้นนี่คือสคริปต์ตามความคิดเห็นของ Jared:

#!/bin/sh

echo "Usage: dbdiff [user1:pass1@dbname1] [user2:pass2@dbname2] [ignore_table1:ignore_table2...]"

dump () {
  up=${1%%@*}; user=${up%%:*}; pass=${up##*:}; dbname=${1##*@};
  mysqldump --opt --compact --skip-extended-insert -u $user -p$pass $dbname $table > $2
}

rm -f /tmp/db.diff

# Compare
up=${1%%@*}; user=${up%%:*}; pass=${up##*:}; dbname=${1##*@};
for table in `mysql -u $user -p$pass $dbname -N -e "show tables" --batch`; do
  if [ "`echo $3 | grep $table`" = "" ]; then
    echo "Comparing '$table'..."
    dump $1 /tmp/file1.sql
    dump $2 /tmp/file2.sql
    diff -up /tmp/file1.sql /tmp/file2.sql >> /tmp/db.diff
  else
    echo "Ignored '$table'..."
  fi
done
less /tmp/db.diff
rm -f /tmp/file1.sql /tmp/file2.sql

ข้อเสนอแนะยินดีต้อนรับ :)


12

dbSolo นั้นจะได้รับเงิน แต่คุณลักษณะนี้อาจเป็นสิ่งที่คุณกำลังมองหา http://www.dbsolo.com/help/compare.html

สามารถใช้งานร่วมกับ Oracle, Microsoft SQL Server, Sybase, DB2, Solid, PostgreSQL, H2 และ MySQL ข้อความแสดงแทน


นี่คือสิ่งที่ฉันกำลังมองหา! ! น่ากลัว
Josh Nankin

11

หากคุณต้องการเปรียบเทียบ schema (ไม่ใช่ data) และเข้าถึง Perl ได้ mysqldiff อาจใช้ได้ ฉันใช้มันเพราะช่วยให้คุณสามารถเปรียบเทียบฐานข้อมูลท้องถิ่นกับฐานข้อมูลระยะไกล (ผ่าน SSH) ดังนั้นคุณไม่จำเป็นต้องทิ้งข้อมูลใด ๆ

http://adamspiers.org/computing/mysqldiff/

มันจะพยายามสร้างแบบสอบถาม SQL เพื่อซิงโครไนซ์ฐานข้อมูลสองแห่ง แต่ฉันไม่เชื่อถือ (หรือเครื่องมือใด ๆ ) เท่าที่ฉันรู้ไม่มีวิธีที่เชื่อถือได้ 100% ในการย้อนกลับวิศวกรการเปลี่ยนแปลงที่จำเป็นในการแปลงสกีมาฐานข้อมูลหนึ่งไปยังอีกโดยเฉพาะอย่างยิ่งเมื่อมีการเปลี่ยนแปลงหลายอย่าง

ตัวอย่างเช่นหากคุณเปลี่ยนเฉพาะคอลัมน์ประเภทเครื่องมืออัตโนมัติสามารถเดาได้ง่ายว่าจะสร้างใหม่อย่างไร แต่ถ้าคุณย้ายคอลัมน์เปลี่ยนชื่อและเพิ่มหรือลบคอลัมน์อื่น ๆ แพ็คเกจซอฟต์แวร์ที่ดีที่สุดก็สามารถเดาได้ว่าเกิดอะไรขึ้น และคุณอาจท้ายสูญเสียข้อมูล

ฉันขอแนะนำให้ติดตามการเปลี่ยนแปลง schema ใด ๆ ที่คุณทำกับเซิร์ฟเวอร์การพัฒนาจากนั้นเรียกใช้คำสั่งเหล่านั้นด้วยตัวเองบนเซิร์ฟเวอร์สด (หรือเลื่อนไปสู่สคริปต์อัพเกรดหรือการโยกย้าย) มันน่าเบื่อกว่า แต่มันจะทำให้ข้อมูลของคุณปลอดภัย และเมื่อถึงเวลาที่คุณอนุญาตให้ผู้ใช้ปลายทางเข้าถึงไซต์ของคุณคุณกำลังจะทำการเปลี่ยนแปลงฐานข้อมูลอย่างต่อเนื่องหรือไม่


อย่าลืมจัดหาทั้งสองอย่าง--hostNและ--userNมันจะล้มเหลวอย่างเงียบ ๆ
Znarkus

ฉันมีปัญหากับเครื่องมือ mysqldbcompare ของออราเคิลที่สร้างข้อบกพร่องในดัชนีและการเปลี่ยนฟิลด์ที่เทียบเท่า เครื่องมือ mysqldiff ทำงานได้อย่างไร้ที่ติและประหยัดเวลาได้ดี
Robert K


6

ตรวจสอบ: http://schemasync.org/ เครื่องมือ schemasync ใช้งานได้สำหรับฉันมันเป็นเครื่องมือบรรทัดคำสั่งที่ใช้งานได้ง่ายในบรรทัดคำสั่ง linux


1
หากคุณมีปัญหาในการติดตั้งบน mac ฉันสามารถทำได้โดยการติดตั้ง mysql และ python โดยใช้ homebrew เท่านั้นโดยไม่ต้องใช้ macports
Bijou Trouvaille


3

มีเครื่องมือที่มีประโยชน์ที่เขียนโดยใช้ Perl เรียกว่าเป็นMaatkit มันมีการเปรียบเทียบฐานข้อมูลและเครื่องมือซิงค์หลายอย่างในสิ่งอื่น ๆ


ฉันไม่รู้เกี่ยวกับโครงการนี้! ขอบคุณดูเหมือนว่ามันมีเครื่องมือบางอย่างที่จะมีประโยชน์มาก
Vincent Ramdhanie

2
ฉันไม่พบเครื่องมือเปรียบเทียบสคีมาใน Maatkit
stepancheg

ฉันไม่ - เราจะพบสิ่งนี้ได้ที่ไหนในเครื่องมือ?
Shabbyrobe

ฉันไม่คิดว่ามีการเปรียบเทียบสคีมาในนั้น ผมกำลังหมายถึงการเปรียบเทียบข้อมูลและการซิงค์ใช้ MK-ตารางการตรวจสอบและ MK-ตารางซิงค์
จรดเอลเลียต

มันอยู่ในกระบวนการcode.google.com/p/maatkit/wiki/mk_schema_sync
droope

3

SQL เปรียบเทียบโดย RedGate http://www.red-gate.com/products/SQL_Compare/index.htm

DBDeploy เพื่อช่วยในการจัดการการเปลี่ยนแปลงฐานข้อมูลในแบบอัตโนมัติ http://dbdeploy.com/


1
เครื่องมือ Red Gate ดูเหมือนจะไม่สนับสนุนสิ่งอื่นนอกจาก SQL Server
Rytmis

2
Red Gate มีรุ่น MySQL เช่นกันฟรีในขณะที่เข้าถึงก่อนกำหนด: red-gate.com/products/MySQL_Compare/index.htm
David Atkinson

ไม่พร้อมใช้งานสำหรับ OSX
AlxVallejo

3

สำหรับตัวฉันเองฉันจะเริ่มต้นด้วยการทิ้งฐานข้อมูลทั้งสองและกระจายการทิ้ง แต่ถ้าคุณต้องการสร้างสคริปต์ผสานโดยอัตโนมัติคุณจะต้องได้รับเครื่องมือจริง

การค้นหาโดย Googleอย่างง่าย ๆเปิดเครื่องมือต่อไปนี้:


3

ลองดูที่ข้อมูล dbForge เปรียบเทียบสำหรับ MySQL มันเป็นแชร์แวร์ที่มีระยะเวลาทดลองใช้ฟรี 30 วัน มันเป็นเครื่องมือ MySQL GUI ที่รวดเร็วสำหรับการเปรียบเทียบและการซิงโครไนซ์ข้อมูลการจัดการความแตกต่างของข้อมูลและการซิงโครไนซ์ที่ปรับแต่งได้

dbForge Data เปรียบเทียบสำหรับ MySQL


3

หลังจากผ่านไปหลายชั่วโมงเพื่อค้นหาเครื่องมือง่ายๆฉันรู้ว่าฉันไม่ได้ดูในศูนย์ซอฟต์แวร์อูบุนตู นี่เป็นวิธีแก้ปัญหาฟรีที่ฉันพบ: http://torasql.com/ พวกเขาอ้างว่ามีเวอร์ชันสำหรับ Windows ด้วยเช่นกัน แต่ฉันใช้มันภายใต้ Ubuntu เท่านั้น

แก้ไข: 2015-Feb-05 หากคุณต้องการเครื่องมือ Windows คางคกสมบูรณ์แบบและฟรี: http://software.dell.com/products/toad-for-mysql/


2
การพัฒนาเครื่องมือนี้หยุดทำงานและรวมอยู่ใน Percona: percona.com/software/percona-toolkit
mrmuggles

2

ไลบรารีคอมโพเนนต์ apache zeta เป็นไลบรารีวัตถุประสงค์ทั่วไปของคอมโพเนนต์คู่ที่หลวม ๆ สำหรับการพัฒนาแอปพลิเคชันโดยใช้ PHP 5

eZ Components - DatabaseSchemaช่วยให้คุณ:

   .Create / บันทึกคำจำกัดความสคีมาฐานข้อมูล
   . เปรียบเทียบสกีมาฐานข้อมูล;
   . สร้างคิวรีการซิงโครไนซ์

คุณสามารถตรวจสอบการสอนได้ที่นี่: http://incubator.apache.org/zetacomponents/documentation/trunk/DatabaseSchema/tutorial.html


2

เครื่องมือเปรียบเทียบและซิงค์ที่ใช้งานง่ายมาก:
Database Comparer http://www.clevercomponents.com/products/dbcomparer/index.asp

ข้อดี:

  • รวดเร็ว
  • ง่ายต่อการใช้
  • ง่ายต่อการเลือกการเปลี่ยนแปลงที่จะนำไปใช้

ข้อเสีย:

  • ไม่ซิงค์ความยาวกับ ints ขนาดเล็ก
  • ซิงค์ชื่อดัชนีไม่ถูกต้อง
  • ไม่ซิงค์ความคิดเห็น

จริงพวกเขาได้อัปเดตผิวเผินด้วยการเปลี่ยนแปลงเล็กน้อยใน 5 ปี แต่มันไม่ได้ถูกพัฒนาอย่างแข็งขัน
Artem Goutsoul

1

ฉันคิดว่าNavicat สำหรับ MySQLจะเป็นประโยชน์สำหรับกรณีนี้ รองรับการประสานข้อมูลและโครงสร้างสำหรับ MySQL ป้อนคำอธิบายรูปภาพที่นี่


0

สำหรับคำถามแรกฉันจะทำการดัมพ์ทั้งคู่และแยกมันออก ไม่แน่ใจเกี่ยวกับ mysql แต่ postgres pg_dump มีคำสั่งให้ดัมพ์สกีมาโดยไม่มีเนื้อหาตารางดังนั้นคุณสามารถดูว่าคุณได้เปลี่ยนสกีมาหรือไม่


MySQL มีคำสั่งที่คล้ายกัน mysql_dump นี่อาจเป็นทางออกถ้าฉันสามารถรวมไว้ในกระบวนการปรับใช้ ขอบคุณ
Vincent Ramdhanie

นอกจากนี้เพื่อประสบการณ์การใช้งานที่ง่ายขึ้นคุณสามารถใช้ phpMyAdmin ซึ่งเป็นฆาตกรตัวจริงสำหรับผู้ใช้ MySQL!
schonarth

สกีมาที่เหมือนกันสามารถทำให้สคีมาแตกต่างกันได้อย่างง่ายดาย ไคลเอนต์ mysql รุ่นต่าง ๆ อาจสร้างการถ่ายโอนข้อมูลแตกต่างกันเล็กน้อย (ปัญหาหากคุณกำลังเปรียบเทียบ schemas จากเครื่องที่แตกต่างกันสองเครื่อง) และสิ่งต่าง ๆ เช่นคีย์ต่างประเทศและข้อ จำกัด อาจถูกทิ้งในลำดับที่แตกต่างกัน
Mark E. Haase

0

ฉันทำงานกับทีมการตลาดของ Nob Hill ฉันต้องการบอกคุณว่าฉันยินดีที่จะได้ยินคำถามข้อเสนอแนะหรือสิ่งอื่นใดโปรดติดต่อฉันได้ตลอดเวลา

เดิมเราตัดสินใจที่จะสร้างเครื่องมือของเราตั้งแต่เริ่มต้นเพราะในขณะที่มีผลิตภัณฑ์อื่น ๆ ในตลาด แต่ก็ไม่มีใครทำหน้าที่ได้อย่างถูกต้อง การแสดงความแตกต่างระหว่างฐานข้อมูลค่อนข้างง่าย เป็นอีกการสร้างฐานข้อมูลเดียวเหมือนจริง การโยกย้ายที่ราบรื่นทั้งสคีมาและข้อมูลเป็นสิ่งที่ท้าทายเสมอ เราทำได้สำเร็จแล้ว
เรามั่นใจอย่างยิ่งว่ามันจะช่วยให้คุณทำการโยกย้ายได้อย่างราบรื่นมากกว่าถ้าไม่ได้ - หากสคริปต์การย้ายข้อมูลที่สร้างขึ้นไม่สามารถอ่านได้เพียงพอหรือไม่ได้ผลสำหรับคุณและเราไม่สามารถแก้ไขได้ภายในห้าวันทำการ - คุณจะได้รับสำเนาฟรีของคุณเอง!

http://www.nobhillsoft.com/NHDBCompare.aspx


เป็นสัญญาหรือไม่? ฉันพยายามมันและลดลงมากกว่าที่มีข้อผิดพลาดไม่กี่ยุติธรรมไม่น้อยว่าเมื่อมีการย้ายการทำงานมันพยายามที่จะใช้เจ้าของเดียวกับฐานข้อมูลเดิม
Cruachan

ใช่มันเป็นสัญญา สำหรับคนส่วนใหญ่เครื่องมือทำงานได้ดี เราสัญญาว่าจะให้สิทธิ์ใช้งานสำหรับข้อบกพร่องใด ๆ ที่คุณพบและเราไม่สามารถแก้ไขได้ภายใน 5 วันทำการ กรุณาติดต่อทีมสนับสนุนของเรา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.