当前位置: 首页 > 面试题库 >

无法在Windows 10上初始化MySQL数据库

鲍健柏
2023-03-14
问题内容

Using Laradock

System Info:

  • Docker版本:17.10.0-ce,构建f4ffd25
  • OS:Windows 10 Home

When I run docker-compose up -d mysql 遇到错误。以下是
docker日志

[Note] Basedir set to /usr/

[Warning] The syntax ‘–symbolic-links/-s’ is deprecated and will be removed
in a future release

[Warning] ‘NO_ZERO_DATE’, ‘NO_ZERO_IN_DATE’ and ‘ERROR_FOR_DIVISION_BY_ZERO’
sql modes should be used with strict mode. They will be merged with strict
mode in a future release.

[ERROR] –initialize specified but the data directory has files in it.
Aborting.

[ERROR] Aborting

I have tried deleting mysql folder under ~/.laradock\data and didn’t work.

Update 1

laradock Dockerfile下的MySQL容器

mysql:
  build:
    context: ./mysql
    args:
      - MYSQL_VERSION=${MYSQL_VERSION}
  environment:
    - MYSQL_DATABASE=${MYSQL_DATABASE}
    - MYSQL_USER=${MYSQL_USER}
    - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    - TZ=${WORKSPACE_TIMEZONE}
  volumes:
    - ${DATA_SAVE_PATH}/mysql:/var/lib/mysql
    - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  ports:
    - "${MYSQL_PORT}:3306"
  networks:
    - backend

MySQL Dockerfile

ARG MYSQL_VERSION=8.0
FROM mysql:${MYSQL_VERSION}

MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>

#####################################
# Set Timezone
#####################################

ARG TZ=UTC
ENV TZ ${TZ}
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN chown -R mysql:root /var/lib/mysql/

ADD my.cnf /etc/mysql/conf.d/my.cnf

CMD ["mysqld"]

EXPOSE 3306

Update 2

After I delete mysql folder under ~/.laradock/data 出现以下错误。命令后,它将在下图中生成文件。当我重新运行时
,返回上面提到的先前的错误。

[Note] Basedir set to /usr/

[Warning] The syntax ‘–symbolic-links/-s’ is deprecated and will be removed
in a future release

[Warning] ‘NO_ZERO_DATE’, ‘NO_ZERO_IN_DATE’ and ‘ERROR_FOR_DIVISION_BY_ZERO’
sql modes should be used with strict mode. They will be merged with strict
mode in a future release.

[Warning] Setting lower_case_table_names=2 because file system for
/var/lib/mysql/ is case insensitive

[Warning] You need to use –log-bin to make –log-slave-updates work.

libnuma: Warning: /sys not mounted or invalid. Assuming one node: No such
file or directory mbind: Operation not permitted

[ERROR] InnoDB: Operating system error number 22 in a file operation.

[ERROR] InnoDB: Error number 22 means ‘Invalid argument’

[ERROR] InnoDB: File ./ib_logfile101: ‘aio write’ returned OS error 122.
Cannot continue operation

[ERROR] InnoDB: Cannot continue operation.

我在Windows 7机器上尝试了它的工作原理。


问题答案:

Disable AIO

这就像我从Virtualbox的来宾Debian OS 启动容器并在Windows 10的共享文件夹上创建数据库文件时遇到的AIO错误一样,为我解决了该问题。

问题似乎是共享文件夹或至少某些Windows版本不支持AIO 。
我的主机崩溃后,从Windows 10 Pro 迁移到家庭版后,对我来说似乎发生了这种情况。

有关详细信息:

  • aio
  • disable aio in MySQL for zfs

以下是一些选项::

选项1-像这样启动容器: :

docker run -it mysql --innodb_use_native_aio=0

选项2-将命令添加到docker-compose文件中:

 command: --innodb_use_native_aio=0

上下文中,这是我正在工作的docker-compose.yml的相关部分:

services:
   db:
     image: ${MYSQL_IMAGE}
     command: "--innodb_use_native_aio=0"
     volumes:
       - ${DB_DATA_PATH}:/var/lib/mysql
     ports:
        - ${MYSQL_PORT}:3306

Option 3 – add an option to your my.cnf file in your build

innodb_use_native_aio=0

选项4-不要将数据库持久保存在本地文件系统上(可以破坏
数据库,不推荐)

只需在包含mysql
db的docker配置中删除该卷即可。当然,如果您做一个docker-compose或
破坏您的容器,您的数据库将被删除,就是这样。



 类似资料:
  • 我已经在macOS 10.14上安装了Cassandra 3.11.3。openjdk版本“11”2018-09-25 openjdk运行时环境18.9(build 11 28)openjdk 64位服务器VM 18.9(build 11 28,混合模式) 当我试图启动卡桑德拉时,我 我猜,某处没有初始化,或者存在与Java相关的不兼容性。有人有什么想法吗?

  • 问题内容: 我正在运行一个dockerized mongo容器。 我想用一些初始化的数据创建一个mongo图像。 有任何想法吗? 问题答案: 首先创建一个docker卷 然后创建您的mongo容器 在这里交换机负责安装的卷在的位置,这是在蒙戈保存其数据。该卷是持久的(在主机上)。即使没有容器在运行,您也会看到mongostore的卷列出为 您可以杀死该容器并创建一个新容器(与上述相同),新的mon

  • 初始化数据 打开MainSetup类,在Daos语句后面插入新建根用户的代码 // 初始化默认根用户 if (dao.count(User.class) == 0) { User user = new User(); user.setName("admin"); user.setPassword

  • 我试图在Python中初始化火花上下文变量。 但我得到了以下错误: py4j。协议Py4JJavaError:调用None时出错。组织。阿帕奇。火花应用程序编程接口。JAVAJavaSparkContext.:JAVAlang.NoClassDefFoundError:无法初始化类组织。阿帕奇。火花内部的配置。组织上的包$ 。阿帕奇。火花斯帕克孔夫。在组织上验证设置(SparkConf.scala

  • 场景:我在Spring中开发了一个使用mysql 8数据库的微服务。这个数据库必须被初始化(创建一个数据库、一些表和数据)。在我的主机上,我用data.sql和schema.sql脚本初始化了数据库。问题是,我必须设置: 第一次执行。这将以我想要的方式初始化我的数据库。对于以后的运行,我必须对该命令进行注释。非常难看的解决方案,但我找不到更好的解决方案,我现在没有得到这个问题的答案。我认为测试它是

  • 我有一个使用MIP SDK的Azure函数,当调用< code>MIP时,我得到以下错误。CreateMipContext(...): 令人惊讶的是,该错误仅在 Azure 上运行时发生。在本地运行时,一切都很好。 我正在使用MIP SDK v1.8.86和.NET Core 3.1。 知道OneDS是什么或者是什么导致了错误吗?