【问题标题】:ddev import-db "ERROR at line 4200: ASCII '\0'" on Windowsddev import-db \"ERROR at line 4200: ASCII \'\\0\'\" 在 Windows
【发布时间】:2022-10-04 22:51:52
【问题描述】:

我在 bluehost 上托管我的网站。我使用 ssh mysqldump 导出数据库。它已解压缩或涂焦油。 然后我使用 ddev import-db

这是我得到的错误

ddev import-db --src=.tarballs/xxx4_2_2022.sql 第 4200 行的错误:语句中出现 ASCII '\0',但除非启用选项 --binary-mode 并且 mysql 以非交互模式运行,否则这是不允许的。如果需要 ASCII '\0',则将 --binary-mode 设置为 1。询问: ''。 无法为 xxx9 导入数据库数据库:ComposeCmd 无法运行 'COMPOSE_PROJECT_NAME=ddev-xxx9 docker-compose -f C:\Users\xxx\ddev\xxx9.ddev.ddev-docker-compose-full.yaml exec -T db bash -c set -eu && ( mysql -uroot -proot -e "如果数据库存在则删除数据库;如果数据库不存在则创建数据库;在 db 上全部授予。* TO 'db'@'%';" && pv /mnt/ddev_config /.importdb3401067882/*.sql | perl -p -e 's/^(创建数据库/*|使用)[^;]*;//' | mysql db)', action='[exec -T db bash -c set -eu && ( mysql -uroot -proot -e "DROP DATABASE IF EXISTS db; CREATE DATABASE IF NOT EXISTS db; GRANT ALL ON db.* TO 'db'@'%';" && pv /mnt/ddev_config/.importdb3401067882/*.*sql | perl -p -e 's/^(CREATE DATABASE \/\*|USE )[^;];//' | mysql db)]', err='exit status 1', stdout='', stderr='ERROR at line 4200: ASCII '\0' 出现在语句中,但这是不允许的,除非选项 --binary-mode 是启用并且mysql以非交互模式运行。如果需要 ASCII '\0',则将 --binary-mode 设置为 1。询问: ''。'

导入失败后,该网站似乎可以正常工作...一切正常...但我仍然担心,我该如何解决这个问题?我在 win 11,使用 gitbash 和 cmder

该站点是最新的drupal 9

【问题讨论】:

    标签: mysql drupal ddev


    【解决方案1】:

    解决方案是在 ddev 中使用不同的 db import 命令

    而是 ddev import-db --src=.tarballs/junk.sql

    你应该使用

    ddev import-db <db.sql 或 ddev import-db < .tarballs/db.sql

    谢谢你!

    出于某种原因,第一个命令给了我这个错误,可能是因为我在 WIN 而不是 LINUX 上?

    【讨论】:

      【解决方案2】:

      经过大量研究,我们在 rfay 的帮助下找到了一个不错的解决方案:

      • 系统:Windows 11 (x64)。

      在我们的案例中,该错误具有误导性,结果证明管道命令本身存在问题。该问题已通过 WSL2 的更新得到修复(无论如何强烈建议更新本身,因为它修复了一个大的安全漏洞):

      • 转到“Windows 更新”→“高级选项”->“接收其他 Microsoft 产品的更新”并将其打开。
      • 再次搜索(新)更新
      • 安装挂起的更新(您应该注意到有一个针对 WSL2 的安全修复)
      • 重新启动,一切顺利

      (如this article 中所述)

      我们对此的第一个解决方案是手动导入转储:

      • 我们需要一个本地安装的 mysql-client 来导入远程数据库。

      • 找出正在运行的 db-container 的端口,例如和

        ddev 描述

      • 使用以下命令导入数据库:

        mysql -h localhost -P db_container_port -u db -p --default-character-set=utf8 database_name < path:dirx.sql

      干杯, ggs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-30
        • 2017-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多