我目前在Windows 10中使用mysql服务器5.6,同时使用mysql,出现错误,就像这样的事情“以下列没有默认值”我在网上看到我可以解决这个问题如果我改变了sql_mode。它目前设置为
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
我是从“mysql server 5.6”文件夹中的“my-default.ini”文件中获取的。我读了几个其他答案,说如果你想永久改变你的sql_mode,你应该通过“my-default.ini”文件来做。所以我做的是,我以管理员的身份运行我的记事本,然后我浏览了打开的“my-default.ini”文件:
c:\programs files (x86)\mysql\mysql server 5.6\my-default.ini
当我打开文件时,我修改了最后一行:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
到
sql_mode=
然后我保存了文件,关闭了它。然后通过使用任务管理器重新启动我的sql服务器:
task manager >> services >> mysql56
这是应该永久修改我的sql_mode的整个过程。当我查看我的“my-default.ini”文件时,最后一行仍然被修改。但如果我通过命令行登录mysql并使用以下代码查看我的sql_mode:
select @@sql_mode;
我知道我的sql_mode是
STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
我希望所有这些都被删除(永久),以便我的错误消失。如果我尝试使用以下命令从命令行修改sql_mode:
set @@global.sql_mode="";
它有效,但是当我重新启动MySQL时,一切都恢复原状。
有人可以告诉我我做错了什么吗?如果有另一种方法可以解决这个问题。
答案 0 :(得分:4)
更新:抱歉,忘记您使用的是Windows 10.我不确定如何在Windows中处理此问题,但可能会尝试将my-default.ini
复制到my.ini
并更改该设置。抱歉混淆。
不确定您是否可以将sql_mode设置为空,只是尝试更改/etc/mysql/my.cnf
文件中的值。如果该文件夹/文件不存在,请创建它并尝试在sql_mode
下设置[mysqld]
,如下所示:
[mysqld]
sql_mode=
我只做了同样的事情,我只将sql_mode
设置为NO_ENGINE_SUBSTITUTION
。
答案 1 :(得分:0)
如果安装了MySQL Workbench,请检查实例的基本目录的服务器状态。你应该在那里找到一个my.ini文件来保存你的更改。
答案 2 :(得分:0)
sql_mode需要添加到文件/etc/init.d/mysql作为参数来启动:
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --sql-mode="" $other_args >/dev/null 2>&1 &
重启MySQL数据库服务器以应用新配置。
答案 3 :(得分:0)
在MYSQL 8和ubuntu服务器20.xx中,我必须添加:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIO
要归档
/etc/mysql/mysql.conf.d/mysqld.cnf
为了使设置在服务器重新启动后保持不变
免责声明:
这是它实际工作的唯一地方,我不知道在哪里添加这些自定义设置是什么好习惯,但是“如果可行,这并不愚蠢”。有人可以告诉我。
我尝试了在论坛上找到的其他选项: