Php 初始化mysql目录错误

Php 初始化mysql目录错误,php,mysql,Php,Mysql,我查看了这一页: mysql\u install\u db被删除,但是,当我使用mysqld--initialize时。它促进了这些错误和警告 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). [ERROR] --initia

我查看了这一页:

mysql\u install\u db
被删除,但是,当我使用
mysqld--initialize
时。它促进了这些错误和警告

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

[ERROR] --initialize specified but the data directory has files in it. Aborting.
[ERROR] Aborting
第一个可以忽略,如下所示:


我不知道如何解决第二个问题。

请仔细阅读错误:

[错误]--指定了初始化,但数据目录中有文件。流产


您的目录不是空的。您必须删除其中的所有内容或选择其他内容。

它通常意味着您的数据目录不是空的。如果删除或重命名数据目录,但问题仍然存在,请检查配置文件
/etc/my.cnf
,并在初始化步骤中删除
验证密码\u策略
变量。启动服务器后,您可以将此变量设置为您想要的任何内容。

我遇到了示例问题。我从中重命名了容器目录

/var/lib/mysql

/var/lib/minesql或其他名称

。现在容器启动了

上一个命令:

docker container run --name=mysql -d -e MYSQL_ROOT_PASSWORD=abc1234 -e MYSQL_DATABASE=sample -e MYSQL_USER=ashik -e MYSQL_PASSWORD=abc123 -v mysql_volume:/var/lib/mysql mysql
工作指令:

docker container run --name=mysql -d -e MYSQL_ROOT_PASSWORD=abc1234 -e MYSQL_DATABASE=sample -e MYSQL_USER=ashik -e MYSQL_PASSWORD=abc123 -v mysql_volume:/var/lib/minesql mysql

在我的例子中,解决方案是在我的
docker compose.yml

发件人:

然后再跑
sudo docker合成构建

sudo docker组装


然后,您可能需要运行migrate
sudo docker compose run web rake db:create
for my.

如果您正在运行docker Desktop for Mac,这可能是因为
docker.qcow2
已超过其最大大小。此文件的默认大小为64GB。您可以调整它的大小,或者要获得更激烈的解决方案,请删除它:

rm~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/docker.qcow2
参考资料:

  • 此解决方案的来源:
  • 因此:
  • Github问题:
  • 博文:

只需删除/data目录即可。这是为我工作的:

就这么简单:

image: mysql:5.7
volumes:
  - ./db:/var/lib/mysql
并确保您的“/db”目录为空。

禁用SElinux

Setenforce 0
还可以在/var/logs/mysql文件夹中创建日志目录 它必须是mysql用户所有者

cd /var/log/
mkdir mysql
chown -R mysql:mysql mysql/

然后在/etc/my.cnf中更改log direcotry

我在Kubernetes和MySQL 5.7中也遇到了这个问题

将来自的建议添加到我的容器的定义中可以使事情正常工作

新的ext4磁盘分区通常不是空的; 有一个lost+found目录,众所周知mysql会阻塞该目录。你 可以尝试将--ignore db dir=lost+found添加到CMD以了解 当然可以(从)

以下是我的工作YAML定义摘录:

name: mysql-master
image: mysql:5.7
args:
  - "--ignore-db-dir=lost+found"
在这里,docker编写了一段代码,以便更好地澄清:

version: '3'
services:
  mysql-master:
    image: mysql:5.7
    command: [--ignore-db-dir=lost+found]
    environment:
      - MYSQL_ROOT_PASSWORD=root
修正方法:
rm-rf/usr/local/ceral/mysql
rm-rf/usr/local/var/mysql
并重新安装mysql

获取了另一个错误,已通过以下方法修复:
我也有类似的问题,但是
/usr/local
中没有
mysql
文件夹

在我的例子中,
mysql
位于
/usr/local/var


所以
rm-rf/usr/local/var/mysql
修复了这个问题

如果它真的是空的,它看起来像是mysql编写的那些文件,并对我说,这很讽刺,但我正在经历它。Lol使用docker compose,我通过以下方法解决了这个问题:我不知道哪个目录中有文件。你知道这是什么目录吗?这取决于你使用的OS发行版。对于Ubuntu来说,它通常是
/var/lib/mysql
,但可能会有所不同。最好用谷歌搜索您的案例中使用的目录。初始化不是有意的,而是来自systemd或任何地方。这个解决方案不是一个解决方案。问题不在于数据,而在于没有人想要的模糊的初始化选项。mysqld应该从它拥有的数据开始,而不是初始化新数据。您的解决方案实际上只包含“读取错误消息”,每个人都肯定已经阅读并理解了该消息。哪个目录是我的“数据目录”?如果MySQL输出它正在签入的目录以向您提供帮助,这将非常有用。您可以使用以下命令查看您的datadir路径:
MySQL-uUSER-p-e'SHOW VARIABLES_Name(如“datadir”)
此外,默认的MySQL数据目录是
/var/lib/MySQL
。您可以从
/etc/my.cnf
中的变量或
/etc/my.cnf.d/
中的文件中找到数据目录路径。这将创建一个新的空卷。你不想使用现有的卷吗?谢谢@Thiago,已经完成了完全相同的问题!拯救我的一天!!
name: mysql-master
image: mysql:5.7
args:
  - "--ignore-db-dir=lost+found"
version: '3'
services:
  mysql-master:
    image: mysql:5.7
    command: [--ignore-db-dir=lost+found]
    environment:
      - MYSQL_ROOT_PASSWORD=root