Mac环境下Ddev项目数据库导出问题求助
Ddev 数据库导出问题解决
问题1:容器内文件无法在本地找到,以及文件复制到本地的方法
- 容器内的
/var/www/html目录和本地项目根目录是双向挂载的,理论上在容器该目录下创建的文件/文件夹应该直接出现在本地项目文件夹中。如果看不到,大概率是容器内操作时的权限问题,或者你误操作到了其他路径。 - 推荐两种方式将容器内的数据库转储文件复制到本地:
- 转储时直接输出到
/var/www/html目录下,比如执行mysqldump ... > /var/www/html/db.sql.gz,这样本地项目根目录里就能直接找到该文件。 - 使用
ddev cp命令直接复制:- 如果你在本地项目目录下,执行:
ddev cp /tmp/db.sql.gz ./ - 如果不在项目目录,指定项目名:
ddev cp <你的项目名>:/tmp/db.sql.gz <本地目标路径>
- 如果你在本地项目目录下,执行:
- 转储时直接输出到
问题2:导出时出现 definer 不存在的错误
这个错误是因为数据库中存在视图、存储过程等对象,其定义者用户在当前数据库中不存在。解决方法是导出时跳过锁表并忽略定义者:
- 执行以下命令直接导出到本地项目目录:
ddev export-db --skip-definer --no-lock-tables --file=./db.sql.gz
- 解释:
--skip-definer:导出时忽略对象的定义者信息,避免因定义者不存在报错--no-lock-tables:跳过锁表操作,解决报错中提到的LOCK TABLES相关问题--file=./db.sql.gz:直接将文件输出到本地项目根目录,无需再从容器复制
内容的提问来源于stack exchange,提问作者Swissdude
相关产品推荐
相关产品推荐

