programing

mysql에서 글로벌 sql_mode 설정

bestcode 2022. 11. 18. 21:38
반응형

mysql에서 글로벌 sql_mode 설정

mysql에서 sql_mode를 설정하려고 하는데 오류가 발생합니다.

명령어:

set global sql_mode='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION'

이 방법은 여러 모드를 설정하는 적절한 방법이 아닌가요?세션 모드와 글로벌모드를 설정하는 장점은 무엇입니까?어느 쪽이 좋습니까?서로 다른 UNC 값으로 데이터베이스를 업데이트하려고 하는 사용자가 있는데 세션 모드를 'NO_BACKSLASH_ESCAPES'로 설정하는 것이 아니라 이를 위해 글로벌 모드를 설정하는 것이 타당하다고 생각했습니다.이게 말이 되나요?

알려주세요.

감사해요.

참고로 MySQL에서 글로벌을 설정하는 경우:

SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';

이렇게 하면 영구적으로 설정되지 않고 다시 시작할 때마다 복구됩니다.

따라서 구성 파일(예: 라 를 서 일 정 니 : 해 so you예 file합 config( ( ing should설 set this따 your파설이다야로정e so you/etc/mysql/my.cnf[SQL] 섹션에서는 MySQL 재시작: MySQL 션 ) ld 경 변 ld 로 도 에 용 시 ] 후 되 my),sq insq

설정 파일: /etc/mysql/my.cnf

[mysqld] 
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

업데이트: 새로운 버전의 Mysql(5.7.8 이상 등)에는 약간 다른 구문이 필요할 수 있습니다.

[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

Make sure that there is a dash between 다음 사이에 대시 표시가 있는지 확인합니다.sql-mode이해 못하겠어.이 모드는 큰따옴표로 둘러싸여 있습니다.

SQL 모드 옵션을 보려면 항상 사용 중인 버전MySQL Docs를 참조하십시오.

mysql 구성 파일을 사용하여 sql 모드를 영구적으로 설정합니다.

In my case i have to change file 내 경우 파일을 변경해야 합니다./etc/mysql/mysql.conf.d/mysqld.cnf as ~하듯이mysql.conf.d is included in 에 포함되어 있다./etc/mysql/my.cnf. 나는 이것을 변화시킨다. [ mysqld ]에서 변경합니다.

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

just removed 방금 제거했다ONLY_FULL_GROUP_BYSQL 모드는 문제가 발생했기 때문입니다.sql 모드가 원인이 되어 문제가 발생하였습니다.

I am using 사용하고 있다ubuntu 16.04,php 7 and mysql --version give me this mysql --version은 이것을 주세요.mysql Ver 14.14 Distrib 5.7.13, for Linux (x86_64) using EditLine wrapper

이 변경 후 다음 명령을 실행합니다.

sudo service mysql stop
sudo service mysql start

Now check sql modes by this query 이제 이 쿼리로 sql 모드를 확인합니다.SELECT @@sql_mode방금 설정한 모드를 사용할 수 있습니다.

해결했어요.

올바른 모드는 다음과 같습니다.

set global sql_mode="NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

MySQL 8에 대해 이 오류를 검색한 사용자에게 적합합니다.

MySQL 8.0.11은 sql 모드에서 'NO_AUTO_CREATE_USER'를 삭제합니다.

MySQL 5.7: GRANT를 사용하여 사용자를 만듭니다.대신 CREATE USER를 사용합니다.이 절차를 따르면 NO_AUTO_CREATE_USER SQL 모드는 GRANT 문에 중요하지 않으므로 이 모드도 권장되지 않습니다.MySQL 8.0.11: GRANT를 사용하여 사용자를 만듭니다.대신 CREATE USER를 사용합니다.이 절차를 따르면 GRANT 문에 NO_AUTO_CREATE_USER SQL 모드가 중요하지 않으므로 이 모드도 마찬가지입니다.

여기서부터 가져가다

당신의 래,, 신 so는sql_mode하다

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

또는 Docker를 사용하는 경우 docker-compose.yml에 다음 명령을 추가할 수 있습니다.

  mysql:
    image: mysql:8.0.13
    command: --sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    ports:
      - 13306:${MYSQL_PORT}

파일: " " " 에 : "/etc/mysql/my.cnf OR /bin/mysql/my.ini

[mysqld]
port = 3306
sql-mode=""

MySQL미적지근하다

아니면, 할 수도 있어요.

[mysqld]
port = 3306
SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

MySQL미적지근하다

임시 변경의 경우 다음 명령을 사용합니다.

set global sql_mode="NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 

영구 변경의 경우: 구성 파일 /etc/my.cnf 또는 /etc/mysql/mysql.conf.d/mysqld.cnf로 이동하여 다음 행을 추가한 후 mysql 서비스를 재시작합니다.

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

관리자 사용자로 데이터베이스에 액세스합니다(루트일 수 있습니다).

현재 SQL_모드 확인

mysql> SELECT @@sql_mode;

새 sql_mode를 설정하려면 데이터베이스를 종료하고 파일을 만듭니다.

nano /etc/mysql/conf.d/<filename>.cnf 

sql_mode 콘텐츠 포함

[mysqld]
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Mysql 재시작

mysql> sudo service mysql stop
mysql> sudo service mysql start

메인 설정 파일 /etc/mysql/my.cnf에는 /etc/mysql/conf.d/ 폴더의 모든 설정 파일이 포함되도록 명령어가 작성되어 있기 때문에 /etc/mysql/conf.d/ 폴더에 파일을 만듭니다.

sql_mode 문서를 확인합니다.

방법 1:

sql_mode 기본값을 확인합니다.

SELECT @@sql_mode //check current value for sql_mode

SET GLOBAL sql_mode = "NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

방법 2:.

하여 phpmyadmin .sql_mode

  • phpmyadmin에 로그인하여 localhost를 엽니다.
  • 메뉴 항목의 맨 위에 있는 변수를 위로 이동하고 sql 모드를 검색합니다.
  • 요건에 따라 sql_mode를 변경하려면 편집 버튼을 클릭하십시오.
  • 변경 내용을 저장합니다.

phpmyadmin의 sql 모드 설정

위의 작업을 수행한 후 서버 재시작

내 경우 mysql과 ubuntu 18.04

이 명령을 사용하여 영구적으로 설정했습니다.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

설정 후에 행을 추가합니다.아래 이미지에서 강조 표시된 예를 참조하십시오.

sql_mode = ""

주의: 다른 모드를 추가할 수도 있습니다.필요에 따라 달라집니다.NO_BACKSLASH_ESCAPES, STRICT_TRANS_TABLE, NO_AUTO_CREATE_USER, NO_ENGINE_SUBTITION

사용 가능한 SQL 모드 참조 및 설명서를 참조하십시오.

추가, sql 모드

그럼 저장하세요.저장 후 mysql 서비스를 재시작해야 합니다.다음 명령을 수행합니다.

sudo service mysql restart

이것이 도움이 되기를 바랍니다:-)

에는 파일을 ./etc/mysql/mysql.conf.d/mysqld.cnfmysqld

이]에 붙여넣습니다.mysqld] > 분 ]

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

이 MySQL(5.6.45)을 않는 것과 .sql_mode모든 구성 파일에서 가져옵니다.

해결책은 다음과 같이 추가하는 것이었다.init_file = /etc/mysql/mysql-init.sql, 「실행」을 실행합니다.SET GLOBAL sql_mode = '';저 안에 있어요

현재 세션에만 설정하려면 다음 명령을 사용합니다.

set session sql_mode="NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

MAMP PRO를 사용하는 사용자에 대한 업데이트 {MAMP 사용자와도 함께 작동합니다.문제에 대한 데를 앓고 것 , 은 이 문제를 입니다.my.cnf/Applications/MAMP/tmp/mysql/my.cnf이 폴더는 mysql 서버를 재부팅할 때마다 리셋되기 때문에 작동하지 않습니다.

문서를 참조하면:

MySQL 구성 파일 "my.cnf"는 "/Applications/MAMP/tmp/mysql/my.cnf"에서 찾을 수 있습니다.주의:MySQL 템플릿에서 작성된 "my.cnf" 파일로 MAMP PRO에 의해 MySQL이 재시작될 때마다 이 파일을 편집하는 것은 작동하지 않습니다.MySQL 설정을 변경하려면 이 템플릿을 편집해야 합니다(메뉴 [File]> [ Open Template ]> [ MySQL ( my . cnf ) > 5 . 7 . 30 ) 。my.cnf 파일을 다른 위치에 수동으로 추가하는 것은 권장하지 않습니다.모든 구성 측면은 MySQL 템플릿으로 처리할 수 있습니다.

이 작업이 완료되면 my.cnf 파일에 다음 항목을 추가합니다.

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Mysql 서버를 재시작합니다.그것이 효과가 있어야 해요.

set global sql_mode="NO_BACKSLASH_ESCAPES, STRICT_TRANS_TABLE, NO_AUTO_CREATE_USER, NO_ENGINE_SUBTION"

언급URL : https://stackoverflow.com/questions/2317650/setting-global-sql-mode-in-mysql

반응형