안녕하세요 jju_developer입니다.
오늘은 mysql에서 mariadb로 연동시 났던 오류들을 총정리해보겠습니다~!
[지난시간 내용 확인]
[MariaDB] 데이터베이스 MYSQL에서 MariaDB로 연동하기
안녕하세요 jju_developer 입니다. 오늘은 기존 mysql을 사용하다가 maria db로 연동을 해야하는 일이 생겨서 해당 부분을 기록하려고 합니다. 우선 mysql에 있는 모든 테이블과 정보들을 덤프로 떠서 그
jju240.tistory.com
[스프링] Tomcat MariaDB 연동
안녕하세요 jju_developer 입니다. 지난시간에 mysql에서 maria 디비로 연동하는 방법에 대해 알아보았습니다. 데이터베이스 MYSQL에서 MariaDB로 연동하기 안녕하세요 jju_developer 입니다. 오늘은 기존 mysql
jju240.tistory.com
저는 스프링 프로젝트와 스프링 부트 프로젝트를 둘다 mysql에서 mariaDB로 이관을 시켜야 했기 때문에
스프링 레거시에서는 잘 돌아가는데 똑같이 스프링 부트에서도 설정을 mariadb로 했는데
오류가 빵빵 나더라구요.
비교적 스프링 했을때는 간단했는데 스프링부트 api소스를 고치는데 오류 잡느라 하루를 꼬박 보내야 했습니다.
아마 이글을 보시는 분들중에서도 스프링 부트로 돌릴때 문제가 있는 분들이 있으리라 생각 됩니다.
우선, 저는 스프링부트 오류에 대해 정리를 해보겠습니다.
★개발환경 ★
인텔리제이, 스프링부트, SDK 1.8, mybatis, jsp, mysql > mariadb, svn


부트에서 변경한 설정
1. pom.xml
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.1.4</version>
</dependency>
2. DatabaseConfig.java
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource);
entityManagerFactoryBean.setPackagesToScan(entitymanagerPackagesToScan);
entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
Properties jpaProperties = new Properties();
// MariaDB Dialect 설정
jpaProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
entityManagerFactoryBean.setJpaProperties(jpaProperties);
return entityManagerFactoryBean;
}
여기서 가장 중요한 부분은
jpaProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
이부분,,,,!!! 이거 때문에 고생고생을 했는데..
마리아디비라서 MySQLDialect 부분을
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
이렇게 바꿨었는데... never do it
결론은 아니였습니다.
ㅎ.. mysql 설정 했었던 것 처럼 그대로 MySQLDialect을 사용하더라구요?
왜인지는 모르겠지만... mariadb 사용하실때 저처럼 마리아로 다 바꾸면 안된다는점... 메모....
3. application-properties
# Database
dataSource.driverClassName=com.mysql.cj.jdbc.Driver
dataSource.url=jdbc:mysql://100.0.0.1:3016/jjudb?characterEncoding=UTF-8&useSSL=false
dataSource.username=아이디
dataSource.password=비번
datasource.initialize=true
여기서 또 중요한 점은
# Database
dataSource.driverClassName=org.mariadb.jdbc.Driver
이렇게 또 마리아 디비라고 mariadb.jdbc로 하면 안된다는점....!!!!!!!!
계속 마리아한테 낚이고 결국 mysql 드라이버로 하면 된다는 기적같은 소식....
spring.main.allow-bean-definition-overriding=true
# Server configuration
server.port=원하는포트
# PackagesToScan
entitymanager.packagesToScan=kr.co.sbsystems.api.models
# MyBatis
mybatis.typeAliasesPackage=kr.co.sbsystems.api.models
mybatis.mapperLocations=classpath*:**/mappers/**/*.xml
#spring.jpa.databases=mariadb
spring.jpa.database=mysql
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
처음에는 진짜... 기존 mysql로 되어있던 부분 다 mariadb로 했었는데 오류 빵빵났습니다.
원인인놈은 바로
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
얘랑
#spring.jpa.databases=mariadb
이 두녀석 이였습니다.
꼭 mysql로 변경하세요!

[오류내용들 모음]
Related cause: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with ----
Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file------
위 오류는 다 설정 변경하니까 해결 되었습니다.
[데이터베이스 mysql꺼 mariadb로 dump뜰때 생겼던 오류]
※ 덤프파일 뜨고 import 해줄때 에러
[Mysql] Unknown collation: 'utf8mb4_0900_ai_ci'
11:36:28 Restoring C:\Users\jju\Documents\dumps\test\jju_dump.sql
Running: mysql.exe --defaults-file="c:\users\public\documents\estsoft\creatortemp\tmpntep4y.cnf" --protocol=tcp --host=100.0.0.1 --user=root --port=3016 --default-character-set=utf8 --comments --database=test < "C:\\Users\\jju\Documents\dumps\test\jju_dump.sqll"
ERROR 1273 (HY000) at line 207: Unknown collation: 'utf8mb4_0900_ai_ci'
여기서 Unknown collation: 'utf8mb4_0900_ai_ci' 에러는
덤프를 뜬 sql 파일을 열어서 utf8mb4_0900_ai_ci 을 싹 다 utf8mb4_general_ci 로 변경해주었더니
에러가 사라지면서 import 가 잘 되었습니다.
해결된 dump 로그
11:41:12 Restoring C:\Users\Geunju\Documents\dumps\jju\test.sql
Running: mysql.exe --defaults-file="c:\users\public\documents\estsoft\creatortemp\tmpu2bza5.cnf" --protocol=tcp --host=100.0.0.1 --user=root --port=3016 --default-character-set=utf8 --comments --database=test < "C:\\Users\\Geunju\\Documents\\dumps\\jju\test.sql"
11:41:27 Import of C:\Users\Geunju\Documents\dumps\test\test_dump.sql has finished
그럼 오늘도 수고하셨습니다~!!!
추가 오류 있으시면 댓글로 알려주세요 ^,^
'주니어 기초 코딩공부 > Database 기초' 카테고리의 다른 글
[MySQL] With절 이란? select 말고 with으로 시작하는 구문? CTE (55) | 2024.07.18 |
---|---|
[스프링] Tomcat MariaDB 연동 (53) | 2023.12.13 |
[MariaDB] 데이터베이스 MYSQL에서 MariaDB로 연동 덤프 뜨기 (0) | 2023.12.13 |
[MYSQL] 일정 시간단위로 데이터 가져오는 방법 (하루, 한시간, 한달) (2) | 2023.11.24 |
내 로컬 데이터베이스를 다른 사용자가 접근 할 수 있도록 변경하기 (2) | 2023.11.22 |