ไม่สามารถเรียกใช้“ mysql”: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวโดยใช้ autoexpect


2

ฉันมีไฟล์ต่อไปนี้: exp.exp

#!/usr/bin/expect

db_host='localhost'
db_name='webui_dev'
db_user='root'
db_pass='rootpass'
new_db_name='db_2011'

expect <<EOF
  log_user 0
  spawn mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name'
  expect "password:"
  send "$db_pass\r"
  log_user 1
  expect eof
EOF

ฉันทำให้มันใช้งานได้โดย sudo chmod +x script/year_changer/create_db.expแต่ถ้าฉันพยายามที่จะดำเนินการฉันได้รับข้อผิดพลาด:

couldn't execute "mysql": no such file or directory
    while executing
"spawn mysql -h localhost  -u root -p rootpass  'create database db_2011'"

1
ฉันต้องถามชัดเจน ... ไคลเอนต์ mysql ติดตั้งอยู่หรือไม่
Joni

ใช่และแน่นอนที่สุด. sudo /usr/local/mysql/support-files/mysql.server restart Shutting down MySQL .. SUCCESS! Starting MySQL .... SUCCESS!
Andrey Yasinishyn

คือ mysql คำสั่งในของคุณ $PATH เมื่อคุณเรียกใช้สคริปต์หรือไม่
Barmar

@Barmar ไม่รู้จริง ๆ ฉันจะตรวจสอบได้อย่างไร?
Andrey Yasinishyn

1
จะเกิดอะไรขึ้นถ้าคุณเพิ่งพิมพ์ mysql จากเปลือกแทนที่จะเรียกใช้สคริปต์หรือไม่
Barmar

คำตอบ:


3

การให้คำสั่งโดยไม่มีพา ธ เต็มจะใช้งานได้จริงโดยไม่มีพา ธ ไปยังไฟล์ที่เรียกใช้งานได้หากมันอยู่ในตัวแปรพา ธ ของคุณ - ตามเอกสาร mysql คุณต้องเพิ่ม PATH=${PATH}:/usr/local/mysql/bin ไปยังเส้นทางของคุณ - ใน. bashrc สำหรับเชลล์แบบโต้ตอบหรือ. bash_profiles สำหรับวัตถุที่ไม่มีการโต้ตอบ


1

ตรวจสอบให้แน่ใจว่าไบนารี mysql ของคุณอยู่ในตัวแปร $ PATH ของคุณ คุณสามารถตรวจสอบสิ่งนี้ได้โดยการดำเนินการ

echo $PATH;

หากคุณไม่เห็นพา ธ ไปยังไบนารี mysql ของคุณที่นั่นคุณจะต้องแก้ไขตัวแปร PATH และเพิ่มพา ธ ไปยังไบนารี mysql ของคุณในไฟล์ ~ / .bash_profile หรือ ~ / .bash_rc

คุณสามารถใช้พา ธ เต็มรูปแบบไปยังไบนารี mysql ของคุณในรหัสของคุณ ตัวอย่างเช่น

spawn /usr/bin/mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.