mac 修改sql_mode
时间: 2023-05-03 09:06:25 浏览: 399
在 MacOS 上,我们可以通过以下步骤修改 MySQL 数据库的 sql_mode:
1. 打开终端,使用管理员权限运行 MySQL 命令行客户端。
2. 输入以下命令,连接到 MySQL 数据库:
```bash
/usr/local/mysql/bin/mysql -u root -p
```
注:/usr/local/mysql/bin/mysql 为 MySQL 客户端的路径,root 为默认的 MySQL 用户名,-p 表示需要输入密码进行认证。
3. 输入 MySQL root 用户密码,按回车键。
4. 进入到 MySQL 命令行模式后,输入以下命令查看当前 sql_mode 的设置:
```bash
SELECT @@GLOBAL.sql_mode;
```
5. 根据需求,修改 sql_mode 的设置。例如,将 STRICT_TRANS_TABLES 从 sql_mode 中去掉,可以输入以下命令:
```bash
SET GLOBAL sql_mode='NO_ENGINE_SUBSTITUTION';
```
6. 修改完成后,可以再次输入以下命令验证修改是否生效:
```bash
SELECT @@GLOBAL.sql_mode;
```
7. 最后,使用 exit 命令退出 MySQL 命令行客户端。
以上就是在 MacOS 上修改 MySQL 数据库的 sql_mode 的过程。需要注意的是,修改 sql_mode 可能会影响到数据库的功能和性能,建议在操作前备份数据,并根据实际需求进行修改。
相关问题
如何处理 this is incompatible with sql_mode=only_full_group_by
当你遇到 "this is incompatible with sql_mode=only_full_group_by" 这个错误,它通常表示你在MySQL 8中尝试执行的GROUP BY语句不符合`ONLY_FULL_GROUP_BY`模式的规定,该模式要求每个分组字段都必须出现在SELECT子句中。
处理这种异常有以下两种方法:
1. **通过MySQL配置文件**:
- Linux: 打开`/etc/mysql/mysql.cnf`(或`my.cnf`)文件,找到`[mysqld]`部分,在其中添加或更新 `sql_mode` 设置,移除`ONLY_FULL_GROUP_BY`。例如:
```ini
sql-mode='...'
```
然后重启MySQL服务使之生效。
- Windows: 找到`C:\Program Files\MySQL\MySQL Server 8.x\my.ini`(或`my.cnf`),同样修改`sql_mode`,重启MySQL服务器。
2. **临时关闭模式**:
如果只想在当前会话中禁用这个模式,可以在运行时执行以下SQL命令(在Linux/Mac上):
```sql
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
或者在Windows的命令行工具(如MySQL Workbench或命令行客户端)中执行相同命令。
在执行这些操作后,你应该可以继续执行原本的GROUP BY查询。但请注意,长期关闭此模式可能带来安全风险,因为它允许不安全的聚合操作,所以最好只在明确知道影响的情况下进行临时调整。
MySQL解决报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column. macbook怎么解决这个报错
在MySQL中,当使用GROUP BY子句对结果进行分组时,SELECT列表中的列必须要么是分组的列,要么是聚合函数的结果。否则,会出现报错"Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column"。解决这个报错的方法有两种:
1. 使用聚合函数对非分组列进行聚合操作。
2. 修改MySQL的sql_mode参数,将其设置为非严格模式。
下面是两种解决方法的示例:
方法一:使用聚合函数对非分组列进行聚合操作
```sql
SELECT custname, MAX(salary) FROM your_table GROUP BY custname;
```
方法二:修改MySQL的sql_mode参数
```sql
SET sql_mode = 'ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER';
```
请注意,修改sql_mode参数可能会影响其他查询的行为,因此在修改之前请确保了解其影响。
阅读全文