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

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

3
ALTER TABLE บนตารางขนาดใหญ่พร้อมคอลัมน์ที่จัดทำดัชนี
ฉันมีตารางขนาดใหญ่ที่มีคอลัมน์ VARCHAR (20) และฉันต้องแก้ไขเพื่อให้เป็นคอลัมน์ VARCHAR (50) โดยปกติแล้วการแสดง ALTER TABLE (การเพิ่ม TINYINT) ในตารางนี้จะใช้เวลาประมาณ 90-120 นาทีในการดำเนินการดังนั้นฉันสามารถทำได้ในคืนวันเสาร์หรือวันอาทิตย์เท่านั้นเพื่อหลีกเลี่ยงผลกระทบต่อผู้ใช้ฐานข้อมูล ถ้าเป็นไปได้ฉันต้องการจะทำการแก้ไขก่อนหน้านี้ คอลัมน์ถูกทำดัชนีด้วยซึ่งฉันเข้าใจว่าจะทำให้ ALTER TABLE ช้าลงเนื่องจากต้องสร้างดัชนีใหม่หลังจากแก้ไขความยาวคอลัมน์ แอพพลิเคชั่นเว็บถูกตั้งค่าในสภาพแวดล้อมการจำลองแบบ MySQL (26 ทาสและต้นแบบหนึ่งคน) ฉันจำได้ว่าเมื่ออ่านที่ไหนสักแห่งว่าวิธีหนึ่งคือการดำเนินการ ALTER TABLE บนแต่ละสลาฟก่อน (ลดผลกระทบต่อผู้ใช้) จากนั้นทำสิ่งนี้กับ Master แต่จะไม่ลองทำซ้ำคำสั่ง ALTER TABLE กับทาส? ดังนั้นคำถามของฉันคือ: วิธีที่ดีที่สุดสำหรับฉันที่จะปรับเปลี่ยนตารางนี้มีการหยุดชะงักขั้นต่ำให้กับผู้ใช้ของฉันคืออะไร? แก้ไข: ตารางคือ InnoDB

1
Information_SCHEMA ใช้งานอย่างไรใน MySQL?
INFORMATION_SCHEMA ตามทฤษฎีแล้วเป็นชุดของมุมมองที่ระบุในมาตรฐาน SQL ที่อนุญาตให้ผู้ใช้ตรวจสอบข้อมูลเมตาของระบบ มันนำมาใช้ใน MySQL ได้อย่างไร? เมื่อฉันเชื่อมต่อกับติดตั้งใหม่ผมเห็นสองฐานข้อมูล: และmysql information_schemaหลังจากใช้SHOW CREATE TABLEคำสั่งบนinformation_schemaฐานข้อมูลดูเหมือนว่าไม่ได้ใช้งานเป็นชุดของมุมมอง แต่ใช้กับตารางฐานแทน สมมติฐานนี้ถูกต้องหรือไม่ หรือมีตารางระบบอื่น ๆ ที่ซ่อนอยู่จากผู้ใช้?

5
จับคู่คอลัมน์เดี่ยวกับค่าหลายค่าโดยไม่มีตารางการเข้าร่วมด้วยตนเองใน MySQL
เรามีตารางที่เราใช้เก็บคำตอบของคำถาม เราจำเป็นต้องสามารถค้นหาผู้ใช้ที่มีคำตอบบางคำถาม ดังนั้นหากตารางของเราประกอบด้วยข้อมูลต่อไปนี้: user_id question_id answer_value Sally 1 Pooch Sally 2 Peach John 1 Pooch John 2 Duke และเราต้องการค้นหาผู้ใช้ที่ตอบว่า 'Pooch' สำหรับคำถามที่ 1 และ 'Peach' สำหรับคำถามที่ 2 SQL จะดังต่อไปนี้ (ชัด) ไม่ต้องกังวล: select user_id from answers where question_id=1 and answer_value = 'Pooch' and question_id=2 and answer_value='Peach' ความคิดแรกของฉันคือการเข้าร่วมโต๊ะด้วยตนเองสำหรับแต่ละคำตอบที่เรากำลังมองหา: select a.user_id from answers a, …

3
จะทำอย่างไรเมื่อเขตข้อมูลในตารางใกล้จำนวนสูงสุด 32 บิตหรือไม่ได้ลงนาม?
ในฐานข้อมูลที่กำหนดใด ๆ ที่เก็บบันทึกผู้ใช้ในรูปแบบของฟิลด์การเพิ่มอัตโนมัติที่ไม่ซ้ำกัน (เพื่อประโยชน์ของตัวอย่างข้อความระหว่างผู้ใช้) ... จะทำอย่างไรเมื่อถึงเวลาและใกล้ถึงจำนวนสูงสุดที่ลงนามหรือไม่ได้ลงนาม ชนิดข้อมูลปัจจุบัน (INT 32- บิต) ฉันเดาว่าเซิร์ฟเวอร์ฐานข้อมูลจะล้นเมื่อพยายามกำหนดหมายเลข (2∧32) -1 ให้กับรายการถัดไปดังนั้นวิธีหลีกเลี่ยงเหตุการณ์นั้น (โดยไม่ต้องเปลี่ยนประเภทข้อมูลเพื่อประโยชน์ของคำถาม) และ เพิ่มระเบียนต่อไปไหม คุณจะทำอย่างไร ทำไมฉันถึงต้องใช้ INT และไม่ใช้ตัวอย่างเช่น VARCHARS หลายวันแล้วที่ฉันถามคำถามสมมุตินี้กับตัวเองและฉันอยากจะรู้ว่ามืออาชีพทำอะไร
14 mysql 

2
ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร“ ข้อผิดพลาด 1298 (HY000): เขตเวลาที่ไม่รู้จักหรือไม่ถูกต้อง: 'UTC'”
เมื่อฉันเรียกใช้คำสั่งต่อไปนี้ฉันได้รับข้อผิดพลาด แต่หนึ่งในสคริปต์ของฉันต้องการมัน SET time_zone = 'UTC'; ERROR 1298 (HY000): Unknown or incorrect time zone: 'UTC'


1
MySQL GRANT PROXY - หมายความว่าอย่างไร
ฉันวิ่ง: show grants for root@localhost; และฉันเห็น GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION จาก mysql docs: https://dev.mysql.com/doc/refman/5.5/en/proxy-users.html สิ่งนี้ทำให้ผู้ใช้ภายนอกเป็นพร็อกซีสำหรับผู้ใช้คนที่สอง นั่นคือการมีสิทธิ์ของผู้ใช้ที่สอง กล่าวอีกนัยหนึ่งผู้ใช้ภายนอกคือ "ผู้ใช้พร็อกซี" (ผู้ใช้ที่สามารถเลียนแบบหรือเป็นที่รู้จักในฐานะผู้ใช้รายอื่น) และผู้ใช้รายที่สองคือ "ผู้ใช้พร็อกซี" (ผู้ใช้ที่สามารถรับข้อมูลประจำตัวของผู้ใช้พร็อกซี่) . แต่ฉันไม่เข้าใจความหมาย ฉันได้รับระบบจากคนงานคนอื่นที่ออกจากงานและต้องการตรวจสอบให้แน่ใจว่าทุกอย่างปลอดภัยและไม่ทราบว่าเงินช่วยเหลือนี้จำเป็นหรือไม่ แต่ถ้ามันไม่ได้ทำให้เกิดปัญหาด้านความปลอดภัยฉันสามารถทิ้งมันไว้ ใครบางคนสามารถอธิบายด้วยวิธีที่ง่ายขึ้น? ปรับปรุง: ฉันจะเชื่อมต่อในฐานะผู้ใช้รายอื่นได้อย่างไร ฉันลองใช้รหัสผ่านชื่อผู้ใช้หลายแบบร่วมกัน แต่ฉันไม่สามารถเชื่อมต่อได้ ตัวอย่างเช่นฉันใช้ผู้ใช้รูท แต่ใช้รหัสผ่านจากผู้ใช้รายอื่นซึ่งใช้งานไม่ได้ ลองใช้ชื่อผู้ใช้และรหัสผ่านรูทอีกครั้งก็ใช้งานไม่ได้เช่นกัน ปรับปรุง: หรือนี่อาจหมายความว่าผู้ใช้รูทสามารถเชื่อมต่อกับผู้ใช้อื่นได้? ทำอย่างนั้นอย่างน้อยถ้าเช่นนั้น?
14 mysql  proxy 

4
Ansible: วิธีการเปลี่ยนรหัสผ่านรูทเซิร์ฟเวอร์ MySQL โดยทำซ้ำเซิร์ฟเวอร์อีกครั้ง
ฉันได้จัดเตรียมเซิร์ฟเวอร์ของฉันด้วยเพลย์บุ๊ค Ansible ฉันใช้เพลย์เยอร์ root / ข้อเท็จจริง - Ansibleแล้ว หนึ่งในภารกิจคือการตั้งค่าเซิร์ฟเวอร์ mysql พร้อมกับรหัสผ่านผู้ใช้รูท mysql ตอนนี้ฉันต้องเปลี่ยนรหัสผ่านนี้อย่างเร่งด่วน ขั้นตอนที่ฉันทำ: ฉันอัปเดตตัวแปรสำหรับบทบาท Ansible ฉันดำเนินการคำสั่งansible-playbook -i hosts/staging server.ymlเพื่อทำซ้ำเซิร์ฟเวอร์ งานทั้งหมดถูกดำเนินการตามที่คาดไว้ (ไม่มีการเปลี่ยนแปลง) แต่สคริปต์ล้มเหลว [mariadb | Set root user password]ด้วยข้อความนี้: msg: unable to connect to database, check login_user and login_password are correct or ~/.my.cnf has the credentials ฉันเดาว่าเมื่อตั้งรหัสผ่านรูทของ MySQL แล้วการทำซ้ำเซิร์ฟเวอร์จะไม่สามารถเปลี่ยนรหัสผ่านนี้ได้ เป็นไปได้ไหมที่จะเปลี่ยนรหัสผ่านรูทของ …
14 mysql 

1
การตั้งค่า mysqldump ที่ดีที่สุดคืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา หลังจากการค้นหาบางอย่างฉันลงเอยด้วยการตั้งค่าต่อไปนี้: mysqldump\ --host=localhost\ --port=3306\ --databases ****\ --user=****\ --password=****\ --default-character-set=utf8\ --add-drop-database\ --add-drop-table\ --add-locks\ --complete-insert\ --extended-insert\ --lock-all-tables\ --create-options\ --disable-keys\ --quick\ --order-by-primary\ --set-charset\ --tz-utc\ > dump/test.sql จนถึงตอนนี้ดีมาก แต่ฉันมีคำถามบางอย่างเกี่ยวกับพารามิเตอร์เช่นเดียวกับการดำเนินการ เกี่ยวกับข้อกังวลแรกของฉันฉันแค่ต้องการให้แน่ใจว่าพวกเขาทั้งหมดจะต้องและไม่ก่อให้เกิดความขัดแย้งใด ๆ เมื่อใช้ร่วมกัน ในที่สุดฉันต้องการสร้างไฟล์ดัมพ์ที่มีความแข็งแกร่งและสอดคล้องกันโดยมีเร็กคอร์ดนับล้านที่สร้างตารางฐานข้อมูลและแทรกข้อมูล สิ่งที่ดีคือการทำให้ฐานข้อมูลไม่พร้อมใช้งานชั่วขณะหนึ่งไม่ใช่ปัญหาสำหรับฉัน เป้าหมายเดียวของฉันคือการสร้างไฟล์การถ่ายโอนข้อมูลที่แข็งแกร่งและสอดคล้องกัน เกี่ยวกับคอนเสิร์ตครั้งที่สองของฉันฉันอยากรู้วิธีที่จะได้รับแจ้งเมื่อคำสั่งนั้นผิดพลาดและถ้าเกิดข้อยกเว้น ความคิดใด ๆ แก้ไข นี่คือคำสั่ง mysqldump ที่อัปเดตของฉันโดยอิงตามความคิดเห็นของ RolandoMySQLDBA mysqldump\ --host=localhost\ --port=3306\ --databases …

4
วิธีสร้างแบบจำลองการสืบทอดของสองตาราง MySQL
ฉันมีตารางบางส่วนที่ฉันเก็บข้อมูลและขึ้นอยู่กับประเภทของบุคคล (คนงานพลเรือน) ที่ทำงานฉันต้องการเก็บไว้ในeventตารางตอนนี้พวกเหล่านี้ช่วยสัตว์ (มีanimalโต๊ะ) ในที่สุดฉันต้องการโต๊ะเพื่อเก็บเหตุการณ์ที่ผู้ชาย (คนงานพลเรือน) ช่วยชีวิตสัตว์ แต่ฉันควรเพิ่มกุญแจต่างประเทศหรือคำนับให้รู้ถึงidคุณค่าของพลเรือนหรือคนงานที่ทำงานนั้นหรือไม่? ตอนนี้ในการออกแบบนี้ฉันไม่ทราบวิธีการที่เกี่ยวข้องกับคนที่ทำงานถ้าฉันจะมีเพียงคนชนิด (พลเรือนหรือพลเรือน) ฉันจะเก็บcivil_idหุบเขาไว้ในpersonคอลัมน์ในตารางสุดท้ายนี้ แต่วิธีการ รู้ว่ามันเป็นทางแพ่งหรือคนงานฉันต้องการโต๊ะ "กลาง" อื่น ๆ หรือไม่? จะสะท้อนการออกแบบไดอะแกรมต่อไปนี้ใน MySQL ได้อย่างไร? รายละเอียดเพิ่มเติม ฉันสร้างแบบจำลองด้วยวิธีต่อไปนี้: DROP TABLE IF EXISTS `tbl_animal`; CREATE TABLE `tbl_animal` ( id_animal INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(25) NOT NULL DEFAULT "no name", specie VARCHAR(10) NOT NULL DEFAULT …

2
วิธีใช้ SUBSTRING โดยใช้ REGEXP ใน MySQL
ฉันมีสถานการณ์ต่อไปนี้ ฉันต้อง substring นิพจน์ปกติจากคำอธิบายการใช้ MySQL รายละเอียด: Lorem D9801 ipsum dolor sit amet ตำแหน่งที่ D9801 คือ REGEXP คำอธิบายข้อความที่แข็งแกร่งทุกข้อความมีเนื้อหาที่แตกต่างกัน แต่ regexp ของฉันควรมีลักษณะดังนี้: REGEXP 'D [[::]]] {4}' REGEXP มี "D" ที่จุดเริ่มต้นเสมอและ "xxxx" - 4 หลักที่ท้าย: Dxxxx ฉันรู้ว่า REGEXP จะส่งกลับเฉพาะค่าจริง / เท็จ แต่ฉันจะสร้างคิวรีเพื่อส่งคืนเฉพาะค่า 'D9801' ได้อย่างไร ฉันลองทำสิ่งนี้: SELECT SUBSTRING (description, LOCATE(REGEXP 'D[[:digit:]]{4}', description), 5) FROM …

2
มีสิ่งต่างๆเช่นประเภทข้อมูลที่กำหนดเองหรือไม่?
MySQL มีการสนับสนุนประเภทข้อมูลที่กำหนดเองหรือไม่? ตัวอย่างเช่นอาจมีการจัดเก็บรหัสไปรษณีย์ในvarchar(10)เขตข้อมูล แต่สามารถย่อเป็นได้intโดยมีตัวเลือกว่างเปล่าและตั้งค่าสถานะว่าเป็นรหัสไปรษณีย์ 5 หลักหรือ 5 + 4 หลัก มีวิธีติดตั้งชนิดข้อมูลที่ไร้รอยต่อสำหรับสิ่งต่าง ๆ หรือไม่? เท่าที่แอปพลิเคชันเกี่ยวข้องมันจะเป็นประเภทสตริงจะมีการตัดทอนข้อมูล (โดยมีหรือไม่มีการเตือน) หากแอปพลิเคชันผ่านข้อมูลที่ไม่ถูกต้อง สามารถใช้ฟังก์ชั่นที่กำหนดเองได้ (ตัวอย่างเช่นมีฟังก์ชั่นINET_ATONบิวด์อินสำหรับที่อยู่ IPv4 แต่ไม่อนุญาตให้ทำสิ่งต่าง ๆzip LIKE '12345%'ที่ควรทำดัชนีอย่างเหมาะสมการสนับสนุนที่เขียนอย่างดีสำหรับประเภทข้อมูลที่กำหนดเองจะอนุญาตให้ทำเครื่องหมายชนิดข้อมูล เป็นจัดเรียง. ดังนั้นขนาดกะทัดรัดเมื่อเรียงลำดับจะเรียงลำดับเช่นเดียวกับถ้ามันเป็นzip intzip varchar(10) สิ่งนี้จะทำให้คอลัมน์มีความกว้างคงที่มันจะอนุญาตให้มีการลดขนาดหน่วยเก็บข้อมูลตัวแปร 6 หรือ 10 ไบต์ลงเหลือ 4 ไบต์ของความกว้างคงที่ มีการใช้งานที่เกี่ยวข้องหลายอย่าง รหัสไปรษณีย์ ที่อยู่ IPv6 ฟิลด์การประทับเวลาที่กำหนดเองที่มีความแม่นยำระดับนาทีและความจุเกินกว่าที่2038มีการใช้พื้นที่เก็บข้อมูลน้อยกว่าdatetimeแต่ไม่จำเป็นต้องสนับสนุนวันที่ก่อนปีของการนำไปใช้ (กล่าวว่า min อาจเป็น 2007 หากเป็นวันที่เก่าที่สุดในระบบ) การประทับเวลาที่ใช้ DST (ซึ่งไม่มีอยู่จริง ) รัฐสองตัวอักษรของสหรัฐอเมริกาสามารถจัดเก็บในไบต์เดียว ความยาวENUMสามารถแยกออกเป็นประเภทข้อมูลที่กำหนดเองเพื่อให้DESCRIBEผลลัพธ์ที่ได้จะไม่ยุ่งเหยิงเมื่อมองด้วยการห่อทั้งหมด …

9
มีเครื่องมืออะไรในการปิดบังข้อมูล (MySQL, Linux) [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังมองหาเครื่องมือปิดบังข้อมูล (ฟรีอย่างดีโอเพนซอร์ส) มีอยู่จริงไหม? หมายเหตุ: คำถามที่เกี่ยวข้องนี้เกี่ยวข้องกับเครื่องมือในการสร้างข้อมูลทดสอบ แต่ในคำถามนี้ฉันสนใจที่จะเริ่มต้นด้วยข้อมูลจริงและปิดบังเพื่อใช้ในการทดสอบโดยไม่สูญเสียความสัมพันธ์พิเศษใด ๆ ที่ทำให้น่าสนใจสำหรับวัตถุประสงค์ในการทดสอบ ข้อมูลที่สร้างขึ้นนั้นใช้ได้สำหรับการทดสอบบางอย่าง แต่ข้อมูลในโลกแห่งความเป็นจริงจะทำให้เกิดปัญหาที่คุณไม่เคยคาดคิดมาก่อน เครื่องมือในการสร้างชุดข้อมูลขนาดใหญ่ของข้อมูลการทดสอบ
14 mysql  linux  testing 

2
ทำไมการนับ (*) ช้าเมื่ออธิบายคำตอบจะรู้ได้อย่างไร
คำค้นหานี้: select count(*) from planner_eventใช้เวลานานมากในการรัน - นานมากฉันยอมแพ้และฆ่ามันก่อนที่มันจะเสร็จ อย่างไรก็ตามเมื่อฉันเรียกใช้explain select count(*) from planner_eventฉันสามารถเห็นคอลัมน์ในผลลัพธ์ด้วยจำนวนแถว (14m) ทำไมการอธิบายถึงสามารถรับจำนวนแถวได้ทันที แต่การนับ (*) ใช้เวลานานในการรัน
14 mysql  count  explain 

1
เป็นไปได้หรือไม่ที่จะแก้ไข definition ทริกเกอร์ที่มีอยู่ใน MySQL?
ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะอัพเดทคำจำกัดความของทริกเกอร์ใน MySQL ตัวอย่างเช่นฉันมีทริกเกอร์ T และฉันต้องการเพิ่มฟังก์ชันใหม่บางอย่างลงไป ข้อสันนิษฐานของฉันคือฉันต้องวางและสร้างใหม่ แนวทางปฏิบัติที่ดีที่สุดในการบริหารฐานข้อมูลสำหรับสถานการณ์ดังกล่าวคืออะไร
14 mysql  trigger  update 

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