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

MySQL เวอร์ชัน 5.1 - โปรดติดแท็กด้วย mysql เพื่อวัตถุประสงค์ในการค้นหา

6
ทำไมต้องใช้ WHERE 1 หรือ WHERE 1 = 1
โดยปกติหากไม่ต้องการเงื่อนไขในข้อความค้นหาของเราเราจะไม่ใช้WHEREประโยค แต่ฉันเห็นWHERE 1ประโยคที่ใช้ในหลาย ๆ ที่แม้ไม่มีเงื่อนไขอื่น ๆ ทำไมถึงทำเช่นนี้? มีประโยชน์เฉพาะเวลาดำเนินการหรือไม่ มันทำให้ฟังก์ชั่นอื่น ๆ ? การใช้WHERE 1=1คล้ายกับสิ่งนี้หรือไม่
50 mysql-5.1 

2
`ข้อผิดพลาด 1114 (HY000) ตาราง…เต็มไปด้วย Innodb_file_per_table ตั้งค่าเป็น autoextend
ฉันมีฐานข้อมูล MySQL ที่เก็บข้อมูลจำนวนมาก (100-200GB - การวัดทางวิทยาศาสตร์จำนวนมาก) ข้อมูลส่วนใหญ่ถูกเก็บไว้ในตารางSampleเดียว ตอนนี้ฉันกำลังสร้างแบบจำลองทาสของฐานข้อมูลและฉันต้องการใช้ประโยชน์จากinnodb_file_per_tableกระบวนการนี้ ดังนั้นฉันตั้งค่าinnodb_file_per_tableในการกำหนดค่าทาสของฉันและนำเข้าการถ่ายโอนข้อมูลของฐานข้อมูล ด้วยความประหลาดใจของฉันมันล้มเหลวด้วย ข้อผิดพลาด 1114 (HY000) ที่บรรทัด 5602: ตาราง 'ตัวอย่าง' เต็ม ปัจจุบันไฟล์Sample.ibdนี้มีขนาดประมาณ 93GB โดยมีพื้นที่ว่างบนพาร์ติชันมากกว่า 600GB ดังนั้นจึงไม่ใช่ปัญหาเรื่องพื้นที่ว่างบนดิสก์ ดูเหมือนว่ามันจะไปกระทบขีด จำกัด ของระบบไฟล์ทุกประเภท (ฉันใช้ ext4) ฉันจะขอบคุณสำหรับความคิดใด ๆ ที่อาจเป็นสาเหตุหรือสิ่งที่จะตรวจสอบ UPDATE:mysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (x86_64)ฉันใช้ SELECT @@datadir; -- returns `/home/var/lib/mysql/` SHOW VARIABLES LIKE '%innodb_data_file_path%'; -- ibdata1:10M:autoextend …

1
เปลี่ยนเส้นทางข้อมูลที่มีอยู่
ฉันต้องการเปลี่ยนdatadirพา ธ ในmy.iniไฟล์ datadirเส้นทางที่มีอยู่คือC:/ProgramData/MySQL/MySQL Server 5.1/Data/ C:ไดรฟ์ของฉันมีขนาด 30 GB และโฟลเดอร์ข้อมูล MySQL มีพื้นที่ 25 GB ดังนั้นผมจึงต้องการที่จะเปลี่ยนไปdatadirF:/naveen/data เป็นไปได้ไหม เครื่องของฉันทำงานWindows Server 2003

2
เราสามารถทำอะไรใน MySQL 5.0 Replication เพื่อจัดการกับปัญหาแบนด์วิดท์?
ฉันกำลังพัฒนาแอพพลิเคชั่นให้ทำงานบนไคลเอนต์พีซี (Win) ซึ่งได้รับการกำหนดค่าด้วยอินสแตนซ์ของเซิร์ฟเวอร์ MySQL 5.1 ที่จะทำหน้าที่เป็นสลาฟแบบอ่านอย่างเดียวไปยังต้นแบบระยะไกล ต้นแบบระยะไกลมีสกีมาหลายสิบ แต่ฉันต้องการเพียงหนึ่งต่อไคลเอนต์ดังนั้นฉันให้การตั้งค่าการจำลองแบบ - do-dbใน my.ini เพื่อทำซ้ำสคีมาที่ลูกค้าต้องการเท่านั้น การจำลองแบบใช้งานได้ แต่เมื่อลูกค้าของเราเข้าสู่ภูมิภาคต่างๆของโลกที่มีการเข้าถึงอินเทอร์เน็ตผ่านเครือข่ายไร้สาย 3G เท่านั้นซึ่งเรียกเก็บตามการใช้ข้อมูลลูกค้าจะเกินขีด จำกัด แผนข้อมูลของพวกเขาอย่างรวดเร็วและประสบปัญหาราคาแพง ดังที่ฉันเข้าใจแล้ว MySQL จะเขียนธุรกรรมทั้งหมดสำหรับสกีมาทั้งหมดลงในไฟล์ binlog ไฟล์เดียวซึ่งหมายความว่าไคลเอนต์แต่ละคนจะต้องดาวน์โหลดธุรกรรมทั้งหมดที่ดำเนินการกับทุกสกีมาบนมาสเตอร์แล้วดาวน์โหลดเมื่อใช้ตัวกรองฐานข้อมูลต่อการจำลองแบบการตั้งค่าdo-dbในไฟล์ my.ini ของลูกค้า เพื่อลดความไร้ประสิทธิภาพนี้ฉันได้ใช้การตั้งค่าslave_compressed_protocol = 1ซึ่งดูเหมือนว่าจะลดข้อมูลที่ส่งลง 50% แต่ก็ยังทำให้ลูกค้าของเราเกินขีด จำกัด ข้อมูลที่รวดเร็วขึ้นในบิล 3G ฉันไม่สามารถจินตนาการได้ว่าฉันเป็นเพียงคนเดียวที่พบสิ่งนี้ดังนั้นฉันแน่ใจว่าฉันจะได้รับคำตอบมากมายเกี่ยวกับวิธีการบรรลุเป้าหมายนี้โดยการตั้งค่า x = y อย่างไรก็ตามฉันไม่พบเอกสารของการตั้งค่าดังกล่าวหรือวิธีการที่แนะนำให้ใช้ จนถึงตอนนี้นี่เป็นความคิดของฉันในการแก้ปัญหาที่เป็นไปได้โปรดให้ข้อเสนอแนะหรือเส้นทางอื่น: ตั้งค่าทาส "พร็อกซี" สำหรับแต่ละสคีมา (ในกล่องอื่นหรือกล่องเดียวกันกับอินสแตนซ์ / พอร์ต MySQL อื่น) กำหนดค่าพร็อกซี slave เพื่อทำซ้ำ-do-db …

1
ไม่นานหลังจากอัปเดตพารามิเตอร์ expire_logs_days และเริ่มต้น sql ใหม่ binlogs เก่าจะถูกลบอย่างไร
MySQL 5.1.x | InnoDB | ของ windows ไดเรกทอรีข้อมูล mysql ของฉันเริ่มเต็มไปด้วยบันทึกถังขยะ ขณะนี้ฉันมีการตั้งค่าต่อไปนี้ที่กำหนดค่าในเซิร์ฟเวอร์ windows mysql ของฉัน: [mysqld] log-bin server-id=1 binlog-do-db=foodb1 binlog-do-db=foodb2 expire_logs_days=25 ฉันวางแผนที่จะเปลี่ยนการตั้งค่า expire_logs_days เป็นexpire_logs_days=10และตีกลับบริการ mysql ไม่นานหลังจากทำการเปลี่ยนแปลงฉันสามารถคาดหวังได้ว่าถังขยะเก่าจะได้รับการล้าง นี่เป็นเพียงส่วนหนึ่งของงานที่ทำในตอนกลางคืนหรือไม่? หรือควรจะทันที

4
MySQL: จะสร้างคอลัมน์ได้อย่างไรถ้าไม่มีอยู่?
ฉันกำลังพยายามสร้างคอลัมน์สำหรับตารางของฉันหากไม่มีอยู่จริง ฉันค้นคว้ามาเยอะ แต่ยังหาทางออกไม่ได้ นี่เป็นไปได้จริง ๆ ที่จะสร้างคอลัมน์แบบมีเงื่อนไขหรือไม่

2
innodb_flush_method = O_DIRECT vs O_DSYNC ผลกระทบต่อประสิทธิภาพใน ext3 กับพาร์ติชันดิสก์ LVM
ในหนึ่งในสภาพแวดล้อมการผลิตของฉันเรามีสองอินสแตนซ์ที่ทำงานบนคลัสเตอร์ RedHat โดยมีหนึ่งอินสแตนซ์การผลิตที่เกี่ยวข้องกับคลัสเตอร์ เรามีหน่วยความจำหลัก 125G พร้อมพูลบัฟเฟอร์ InnoDB 24G ซึ่งครอบครองโดย instance1 & 12G ที่ครอบครองโดย instance2 ซึ่งไม่เกี่ยวข้องกับคลัสเตอร์ RedHat ทั้งข้อมูลและบันทึกธุรกรรมอยู่บนพาร์ติชั่นดิสก์ LVM พร้อมระบบไฟล์ ext3 สำหรับการเพิ่มประสิทธิภาพการทำงานที่ดีขึ้นและ I / O throughput ที่ฉันได้ตัดสินใจที่จะเปลี่ยนแปลงไปinnodb_flush_methodO_DIRECT อ้างอิงจากเอกสารของ MySQL: ที่ข้อมูล InnoDB และไฟล์เข้าสู่ระบบตั้งอยู่บน SAN จะได้รับพบว่าการตั้งค่าinnodb_flush_methodเพื่อO_DIRECTประสิทธิภาพสามารถลดง่ายSELECTงบโดยปัจจัยที่สาม หมายถึงการที่มีประสิทธิภาพสูง MySQL Ver 2 และ 3 มันบอกว่านักพัฒนา InnoDB innodb_flush_method=O_DSYNCพบข้อบกพร่องเกี่ยวกับการใช้ O_SYNCและO_DSYNCคล้ายกับfsync()และfdatasync(): O_SYNCซิงค์ทั้งข้อมูลและเมตาดาต้าในขณะที่O_DSYNCซิงค์ข้อมูลเท่านั้น ถ้านั่นดูเหมือนคำอธิบายมากมายโดยไม่มีคำแนะนำนี่คือคำแนะนำ: ถ้าคุณใช้ระบบปฏิบัติการยูนิกซ์เหมือนระบบปฏิบัติการและควบคุม RAID ของคุณมี writecache O_DIRECTแบตเตอรี่สำรองเราขอแนะนำให้คุณใช้ …

4
ฉันขอแน่ใจได้หรือไม่ว่าสองคอลัมน์ไม่มีค่าเดียวกัน
หากฉันมีตารางที่มีลักษณะเช่นนี้ CREATE TABLE foo ( id INT NOT NULL AUTO_INCREMENT, aa INT NOT NULL, bb INT NOT NULL, PRIMARY KEY (id), UNIQUE KEY (aa, bb), CONSTRAINT aa_ref FOREIGN KEY (aa) REFERENCES bar (id), CONSTRAINT bb_ref FOREIGN KEY (bb) REFERENCES bar (id) ) มีวิธีที่จะทำให้แน่ใจว่าaa != bbนอกเหนือจากการใช้ตรรกะระดับแอปพลิเคชันหรือบังคับให้ทริกเกอร์ล้มเหลวก่อนที่จะแทรก?
11 mysql-5.1 

1
ทำไม mysql 5.5 ช้ากว่า 5.1 (linux โดยใช้ mysqlslap)
my.cnf (5.5 และ 5.1 เหมือนกัน): back_log=200 max_connections=512 max_connect_errors=999999 key_buffer=512M max_allowed_packet=8M table_cache=512 sort_buffer=8M read_buffer_size=8M thread_cache=8 thread_concurrency=4 myisam_sort_buffer_size=128M interactive_timeout=28800 wait_timeout=7200 MySQL 5.5: ..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 --iterations=5 -S /tmp/mysql_5.5.sock --engine=innodb Benchmark Running for engine innodb Average number of seconds to run all queries: 15.156 seconds Minimum number of seconds to run …

2
การเพิ่มผู้ใช้ไปยัง MySQL ด้วย 'name' @ '%' ล้มเหลวด้วย ERROR 1396
ฉันแค่พยายามเพิ่มผู้ใช้ใหม่ไปยัง MySQL โดยใช้ CREATE USER 'name'@'%' IDENTIFIED BY '...' อย่างไรก็ตามมันล้มเหลวด้วยข้อผิดพลาดต่อไปนี้: ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%' การเพิ่มผู้ใช้สำหรับ localhost นั้นทำได้ดี: CREATE USER 'name'@'localhost' IDENTIFIED BY '...' ฉันไม่มีเงื่อนงำสิ่งที่อาจเป็นปัญหาได้ ฉันจะขอบคุณสำหรับความคิดใด ๆ (ฉันใช้mysql Ver 14.14 Distrib 5.1.66อยู่)

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