คำถามติดแท็ก mysql

MySQL ทุกรุ่น (ไม่ใช่ Microsoft SQL Server) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น mysql-5.7 หากเกี่ยวข้องกับคำถาม

2
จะบันทึก verbose output จาก mysqldump ได้อย่างไร?
คุณมักจะบันทึกเอาต์พุต verbose ของคำสั่ง Linux ดังนี้: # command > output.txt แต่เมื่อคุณใช้คำสั่งเช่นmysqldumpนั้น>ตัวเลือกจะส่งออกดัมพ์ของตารางฐานข้อมูลไปยังไฟล์ที่ต้องการ: # mysqldump --username=whatever --password=whatever -h localhost database > dump.sql หากคุณเพิ่มใน-vตัวเลือก (verbose) ไปที่mysqldumpมันจะแสดงผลข้อมูลความช่วยเหลือเกี่ยวกับสิ่งที่คำสั่งทำ ฉันจะบันทึกเอาต์พุต verbose นี้ไปยังไฟล์ได้อย่างไรเนื่องจาก>ตัวเลือกถูกใช้เพื่อส่งออกข้อมูลตารางฐานข้อมูลไปยังไฟล์ โดยเฉพาะอย่างยิ่งฉันจะทิ้งผลลัพธ์ของฐานข้อมูลหนึ่งลงในฐานข้อมูลอื่นเช่นนี้ mysqldump -alv -h 123.123.123.123 --user=username --password=p@ssw0rd --add-drop-table databasename | mysql --user=username --password=p@ssw0rd -h localhost localdatabase ฉันลองต่อไปนี้ แต่ไฟล์เอาต์พุตไม่มีข้อมูลในตอนท้าย mysqldump -alv -h 123.123.123.123 --user = ชื่อผู้ใช้ …

1
การถ่ายโอนข้อมูล MySQL คืนค่า - วิธีการเก็บความคิดเห็น
ดังนั้นฉันมีการถ่ายโอนข้อมูล MySQL ที่ซับซ้อนเป็นข้อมูลสำรอง น่าเสียดายที่การสำรองข้อมูลนั้นซับซ้อนและเราใช้ทริกเกอร์ชั่วร้าย ทริกเกอร์ชั่วร้ายของเราบางคนมีบรรทัดความคิดเห็นเริ่มต้นด้วยอักขระ # เมื่อฉันสำรองฐานข้อมูลการถ่ายโอนข้อมูลที่เป็นผลลัพธ์จะบันทึกบรรทัด # ปัญหาคือเมื่อฉันทำการคืนค่า บรรทัดที่ขึ้นต้นด้วย # จะถูกแทนที่ด้วยบรรทัดว่าง ดังนั้นฉันกำลังมองหาวิธีการคืนค่าการถ่ายโอนข้อมูลด้วยบรรทัดเริ่มต้นด้วยปอนด์

2
รับจำนวนที่เพิ่มขึ้นของมูลค่ารวมในตารางที่เข้าร่วม
ฉันมีสองตารางในฐานข้อมูล MySQL 5.7.22: และposts reasonsแต่ละแถวโพสต์มีและอยู่ในหลายเหตุผลแถว แต่ละเหตุผลมีน้ำหนักที่เกี่ยวข้องและดังนั้นแต่ละโพสต์จึงมีน้ำหนักรวมทั้งหมดที่เกี่ยวข้อง สำหรับการเพิ่มน้ำหนักแต่ละจุด 10 คะแนน (เช่น 0, 10, 20, 30, ฯลฯ ) ฉันต้องการรับจำนวนการโพสต์ที่มีน้ำหนักรวมน้อยกว่าหรือเท่ากับการเพิ่มขึ้นนั้น ฉันคาดหวังผลลัพธ์ที่จะมีลักษณะเช่นนี้: weight | post_count --------+------------ 0 | 0 10 | 5 20 | 12 30 | 18 ... | ... 280 | 20918 290 | 21102 ... | ... 1250 | 118005 1260 …

2
ปัญหาเกี่ยวกับการรวมเลขจำนวนเต็มถึงจำนวน (ทศนิยม)
ฉันมีสถานการณ์นี้ดูเหมือนว่า MySQL ใช้ค่าทศนิยมที่ใหญ่ที่สุดและพยายามที่จะแปลงค่าอื่น ๆ ปัญหาคือว่าแบบสอบถามนี้สร้างขึ้นโดยห้องสมุดภายนอกดังนั้นฉันจึงไม่สามารถควบคุมรหัสนี้ได้ในระดับนี้อย่างน้อย คุณมีความคิดในการแก้ไขปัญหานี้หรือไม่? SELECT 20 AS x UNION SELECT null UNION SELECT 2.2; +------+ | x | +------+ | 9.9 | -- why from 20 to 9.9 | NULL | | 2.2 | +------+ ผลลัพธ์ที่คาดหวัง +------+ | x | +------+ | 20 | -- or 20.0, doesn't …

3
ข้อ จำกัด ด้านความซื่อสัตย์ในฐานข้อมูลเชิงสัมพันธ์ - เราควรมองข้ามหรือไม่?
ฉันกำลังสนทนาอย่างถาวรกับผู้พัฒนาของ บริษัท ที่ฉันทำงานอยู่เพราะพวกเขาบอกว่าเป็นการดีกว่าที่จะกำจัดการบังคับใช้ความสัมพันธ์ (ผ่านคำจำกัดความของคีย์ต่างประเทศ) ในฐานข้อมูลเชิงสัมพันธ์เพื่อเพิ่มความเร็วในการสืบค้นที่ใหญ่ขึ้น ประสิทธิภาพ. แพลตฟอร์มภายใต้การพิจารณาคือ MySQL 5.x และไม่มีการตั้งค่า KEY ต่างประเทศแม้ข้อ จำกัด หลักบางประการของตารางที่เกี่ยวข้องจะหายไปซึ่งอย่างน้อยสำหรับฉันก็ไม่สมเหตุสมผล อาจจะถูกและผิด แต่ฉันไม่มีข้อโต้แย้งเพียงพอที่จะพูดคุยเกี่ยวกับสถานการณ์นี้ นี่เป็นวิธีที่ได้รับความนิยมเป็นเวลาสามปีแล้ว ฉันใหม่ใน บริษัท นี้ (เพียงหนึ่งเดือน) แต่เป็นผลิตภัณฑ์ "งาน" มีลังเลที่จะปรับปรุงฐานข้อมูล ไม่เป็นไรสิ่งแรกที่ฉันสังเกตเห็นคือหน้าหนึ่งใช้เวลาโหลด 1 นาที (ใช่ 60 วินาที!) หนึ่งในข้อเรียกร้องที่อยู่เบื้องหลังสถานะของกิจการในปัจจุบันคือฐานข้อมูล“ denormalized” นั้นเร็วกว่าฐานข้อมูลปกติ แต่ฉันไม่เชื่อว่าเป็นเรื่องจริง ข้อความค้นหาที่เกี่ยวข้องส่วนใหญ่รวมการดำเนินการของ JOIN ซึ่งทำให้การทำงานช้ามากและช้ามากด้วยข้อมูลจำนวนมาก (ฐานข้อมูลมีจำนวนแถวนับล้าน) โดยทั่วไปการจัดการการดำเนินงาน "CRUD" ถูกนำไปใช้ในระดับรหัสโปรแกรมแอปพลิเคชัน ตัวอย่างเช่นในการลบข้อมูลบางส่วนจากสมมติว่าTableA: มีความจำเป็นต้องตรวจสอบครั้งแรกได้ทันทีหากมีความสัมพันธ์ระหว่างแถวของบางTableAและTableB, ในกรณีที่ความสัมพันธ์ดังกล่าว“ ตรวจพบ” แล้วรหัสโปรแกรมแอปจะไม่อนุญาตให้ลบแถวที่เกี่ยวข้องแต่ หากรหัสโปรแกรมแอปล้มเหลวด้วยเหตุผลบางอย่างการดำเนินการลบจะ“ สำเร็จ” ไม่ว่าจะมีความสัมพันธ์ใด ๆ …

4
MySQL - mysql_upgrade - เกิดข้อผิดพลาด: ไม่สามารถตั้งค่าตัวแปรเซิร์ฟเวอร์
ฉันเรียกใช้ MySQL 5.7.11 ภายในภาพนักเทียบท่าอย่างเป็นทางการ เมื่อฉันต้องการอัพเกรดฉันได้รับข้อผิดพลาดต่อไปนี้: mysql_upgrade -uroot -p password: Error occurred: Cannot setup server variables. ฉันค้นหาไปรอบ ๆ ไม่พบคำใบ้ใด ๆ ฉันพยายามวิ่งด้วย--verboseแต่ไม่มีโชค สำหรับการอ้างอิงที่นี่เป็นบันทึกเมื่อฉันเริ่ม db: db_1 | 2016-02-17T11:23:10.453190Z 0 [ERROR] Incorrect definition of table performance_schema.events_waits_current: expected column 'NESTING_EVENT_TYPE' at position 15 to have type enum('TRANSACTION','STATEMENT','STAGE','WAIT', found type enum('STATEMENT','STAGE','WAIT'). db_1 | 2016-02-17T11:23:10.453233Z 0 [ERROR] …
10 mysql  upgrade 

3
วิธีหลีกเลี่ยงการขึ้นต่อกันแบบวนซ้ำ (การอ้างอิงแบบวงกลม) ระหว่าง 3 ตาราง?
ฉันมี 3 ตาราง: คน เสา ชอบ เมื่อฉันออกแบบโมเดล ER มันมีการพึ่งพาแบบวนรอบ: 1: N คน -------- <โพสต์ 1: N โพสต์ ---------- <ไลค์ 1: N คน -------- <ไลค์ ตรรกะคือ: 1 คนสามารถมีโพสต์ได้มากมาย 1 โพสต์มีไลค์มากมาย 1 คนสามารถชอบโพสต์จำนวนมาก (คนที่สร้างไม่สามารถถูกใจโพสต์ของเขาเอง) ฉันจะลบการออกแบบแบบวงกลมนี้ได้อย่างไร หรือการออกแบบฐานข้อมูลของฉันผิด

2
มีวิธีเพิ่มประสิทธิภาพการเรียงลำดับตามคอลัมน์ของตารางที่เข้าร่วมหรือไม่
นี่คือแบบสอบถามที่ช้าของฉัน: SELECT `products_counts`.`cid` FROM `products_counts` `products_counts` LEFT OUTER JOIN `products` `products` ON ( `products_counts`.`product_id` = `products`.`id` ) LEFT OUTER JOIN `trademarks` `trademark` ON ( `products`.`trademark_id` = `trademark`.`id` ) LEFT OUTER JOIN `suppliers` `supplier` ON ( `products_counts`.`supplier_id` = `supplier`.`id` ) WHERE `products_counts`.product_id IN (159, 572, 1075, 1102, 1145, 1162, 1660, 2355, …
10 mysql  order-by 

5
คำนวณขนาดแถวและขนาดแถวสูงสุดสำหรับตาราง
ปัญหา: มีวิธีคำนวณจำนวนไบต์ที่ใช้โดยการสร้างตารางหรือไม่ฉันรู้ว่าคุณสามารถรับข้อมูลบางอย่างจาก data_schema.tables แต่ข้อมูลนั้นไม่ถูกต้องเพียงพอ สิ่งที่จำเป็นจริง ๆ คือจำนวนไบต์ตามคำจำกัดความของตารางสำหรับinnodb เท่านั้นและการเปรียบเทียบอาจพิจารณาเป็นutf-8-general-ci ตัวอย่างเช่นการทดสอบตารางมีดังนี้ สร้างการทดสอบตาราง ( col1 varchar (25), col2 int, col3 varchar (3), col4 ถ่าน (15), col5 datetime ); ตอนนี้จะต้องทราบขนาดแถวทั้งหมดที่สามารถสะสมในหนึ่งแถวตามประเภทของคอลัมน์ในตาราง พบวิธีการแก้ปัญหาที่คล้ายกันใน MSSQL แต่ต้องการรุ่น MySQL ของมัน สคริปต์เพื่อประมาณขนาดแถวสำหรับตารางใด ๆ ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

2
ปัญหาเกี่ยวกับการติดตั้ง MySQL
ก่อนอื่นแก้ตัวความยาวโพสต์นี้ยาวมากและต้องการพื้นหลังบางวินาที มันยากสำหรับฉันที่จะแยกแยะสัญญาณจากเสียงรบกวนได้โปรดรับหากสิ่งเหล่านี้ไม่เกี่ยวข้อง: หลายสัปดาห์ที่ผ่านมาฉันสมัครใจเลือกที่จะอัปเกรดเป็น Windows 10 หลังจากนั้นฉันก็ตัดสินใจลบการติดตั้ง Python ที่ฉันไม่ต้องการอีกต่อไป หลังจากลบ 2.7 ล่าสุด (และรักษาเพียง 3.4.3) ทุกอย่างดูเหมือนจะทำงานได้ดีจนกระทั่งคอมพิวเตอร์ของฉันล้มเหลวโดยไม่คาดคิด ตั้งแต่นั้นมา Windows 10 ก็ไม่เคยเหมือนเดิมและไม่น่าเชื่อถืออย่างยิ่ง ฉันถูกบังคับให้ลดระดับเป็น Windows 7 อีกครั้งและเมื่อเริ่มต้น ฉันได้รับข้อความแสดงข้อผิดพลาดสองข้อความ: อันที่กล่าวว่า python dll ไม่พบและอีกอันที่กล่าวว่า: จุดเริ่มต้นของโพรซีเดอร์ RpcImpersonateClientContainer ไม่สามารถอยู่ในไลบรารีลิงก์แบบไดนามิก RPCRT4.dll ข้อผิดพลาดที่สองนี้ฉันเชื่อว่าเป็นสิ่งสำคัญ การค้นหาคร่าวๆชี้ไปที่สิ่งนี้ซึ่งระบุว่าเป็นกระบวนการของ Windows 10 เท่านั้น ฉันจัดการเพื่อติดตั้งใหม่และถอนการติดตั้ง python 2.7 และ 3.4.3 หลายครั้งและข้อผิดพลาดของ python dll ไม่ปรากฏอีกต่อไป (ดังนั้นฉันจึงมี 3.4.3 เป็น Python เวอร์ชั่นเดียวในเครื่องของฉัน) …

2
การเปลี่ยนไดเรกทอรีข้อมูลบนเซิร์ฟเวอร์ฐานข้อมูล MySQL
ฉันติดตั้งเซิร์ฟเวอร์ mysql 5.6.24 บน Windows Server 2012 R2 แล้ว ฉันอิมพอร์ตไฟล์ดัมพ์และไฟล์ข้อมูลถูกเก็บไว้ C:\ProgramData\MySQL\MySQL Server 5.6\data D:\ProgramData\Dataฉันต้องการที่จะเปลี่ยนไดเรกทอรีเช่น คุณช่วยฉันได้ไหม

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

1
คีย์ DISABLE ของ MySqlDump ไม่มีผลต่อการนำเข้า
ฉันได้ติดตามคำถามก่อนหน้านี้ของฉันเกี่ยวกับความเร็วการนำเข้าด้วย Inno-Tables (ประหลาดใจ!) สถานการณ์สมมติ ฉันพยายามนำเข้าฐานข้อมูลขนาดใหญ่ * การถ่ายโอนข้อมูลในเครื่อง dev ท้องถิ่นของฉันในเวลาที่เหมาะสม เรามีจำนวนมากKEYที่แนบมากับตารางซึ่งกลายเป็นคอขวด แต่ยังคงมีความสำคัญสำหรับระบบสดของเรา แนวทางของฉันหลังจากถามคำถามข้างต้นคือการลบKEY ...คำสั่งจากการถ่ายโอนข้อมูลนำเข้าและเพิ่มคีย์อีกครั้ง อย่างไรก็ตามฉันมักจะพบว่าตัวเองกำลังแก้ไขการถ่ายโอนข้อมูลปัจจุบันเพื่อนำเข้าภายในเครื่องและฉันเจอ "ความคิดเห็น" ตลกเหล่านี้ (The disable/enable keys-lines) -- -- Dumping data for table `monster` -- LOCK TABLES `monster` WRITE; /*!40000 ALTER TABLE `monster` DISABLE KEYS */; INSERT … INSERT … INSERT /*!40000 ALTER TABLE `monster` ENABLE KEYS */; …

3
ประสิทธิภาพการนำเข้า InnoDB
ฉันกำลังดิ้นรนกับการนำเข้าจำนวนมาก InnoDB- ตารางที่มีขนาดประมาณ 10 ล้านแถว (หรือ 7GB) (ซึ่งสำหรับฉันเป็นตารางที่ใหญ่ที่สุดที่ฉันเคยทำงานด้วย) ฉันค้นคว้าวิธีปรับปรุงความเร็วการนำเข้าของ Inno และในขณะที่การติดตั้งของฉันมีลักษณะดังนี้: /etc/mysql/my.cnf/ [...] innodb_buffer_pool_size = 7446915072 # ~90% of memory innodb_read_io_threads = 64 innodb_write_io_threads = 64 innodb_io_capacity = 5000 innodb_thread_concurrency=0 innodb_doublewrite = 0 innodb_log_file_size = 1G log-bin = "" innodb_autoinc_lock_mode = 2 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit=2 innodb_buffer_pool_instances=8 import is done …

1
การสร้างดัชนี MySQL ล้มเหลวในตารางเต็ม
UPDATE: tl; dr: ปัญหาคือ MySQL ใช้TMPDIRเมื่อสร้างดัชนี และฉันTMPDIRก็เป็นหนึ่งในพื้นที่ดิสก์หมด ต้นฉบับ Q: ฉันพยายามที่จะเพิ่มดัชนีเพื่อตาราง InnoDB, table is full errorและได้รับการ ฉันมีพื้นที่ดิสก์เพียงพอและการตั้งค่า MySQL มีไฟล์ต่อตาราง = 1 ข้อมูลตารางคือ 85GB และฉันคิดว่าดัชนีจะอยู่ที่ประมาณ 20GB - 30GB และฉันมีพื้นที่ดิสก์มากกว่านั้น ฉันใช้ ext3 ด้วยดังนั้นฉันไม่รู้สึกว่ามีปัญหากับการ จำกัด ขนาดไฟล์จากมุมมองของระบบปฏิบัติการ ข้อผิดพลาดที่บันทึกไว้มีลักษณะดังนี้: 140616 13:04:33 InnoDB: Error: Write to file (merge) failed at offset 3 1940914176. InnoDB: 1048576 bytes should …
10 mysql  innodb  index 

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