如何将SQL文件导入Laravel Sail的MySQL容器?
Laravel Sail导入SQL到MySQL容器的解决方案
可行,你遇到的"the input device is not a TTY"错误是因为sail exec默认会尝试分配TTY终端,而重定向输入时不需要TTY,只需调整命令参数即可解决。
解决方法
方法1:关闭TTY分配(推荐)
在sail exec后添加-T(或完整写法--no-tty)参数,禁用TTY分配,命令如下:
sail exec -T mysql mysql -u username -p database_name < file.sql
执行后会提示输入数据库密码,直接输入即可完成导入。
方法2:命令行传递密码(不推荐生产环境)
如果不想手动输入密码,可以将密码直接写在命令中(注意明文密码存在安全风险):
sail exec -T mysql mysql -u username -p'your_password' database_name < file.sql
方法3:先复制文件到容器再导入
也可以先把SQL文件复制到MySQL容器内部,再执行导入:
# 复制本地SQL文件到容器的/tmp目录 sail cp file.sql mysql:/tmp/file.sql # 进入容器执行导入 sail exec -T mysql mysql -u username -p database_name < /tmp/file.sql
注意事项
- 确保
file.sql在当前执行命令的目录下,否则请使用文件的绝对路径 - 替换命令中的
username、database_name为你实际的数据库用户名和库名 - 生产环境禁止在命令行明文传递数据库密码
内容的提问来源于stack exchange,提问作者Nir ina
相关产品推荐
相关产品推荐

