동시성제어
미해결
실습으로 배우는 선착순 이벤트 시스템
안녕하세요 강의를 듣다가 궁금증이 생겼는데요. kafka는 메시지를 하나씩 처리하기 때문에 동시성 제어도 가능할 것이라고 이해했는데 그렇다면 여기서 레디스를 사용하지 않더라도 카프카만 사용해도 동시성과 관련된 데이터 정합성을 보장할 수 있는건가요?
- java
- docker
- spring-boot
- kafka
- redis
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
실습으로 배우는 선착순 이벤트 시스템
안녕하세요 강의를 듣다가 궁금증이 생겼는데요. kafka는 메시지를 하나씩 처리하기 때문에 동시성 제어도 가능할 것이라고 이해했는데 그렇다면 여기서 레디스를 사용하지 않더라도 카프카만 사용해도 동시성과 관련된 데이터 정합성을 보장할 수 있는건가요?
해결됨
Java/Spring 주니어 개발자를 위한 오답노트
Collection.Map의 Good 케이스를 알 수 있을까요? 맵을 사용할 때 맵 안에 맵이 있고 이런 형태를 사용하지 않는게 좋은건지 아니면 따로 dto로 변환해서 사용해야하는건지 구분이 안 가서 질문 드립니다 ! 지정된 scope를 넘나들지 않는다는 것도 이해가 가지 않습니다 ㅠㅠ 조금만 더 쉽게 설명 붙여주시면 감사드리겠습니다!
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
강의에서는 아래와 같이 select 쿼리를 이용해 업데이트 된 회원을 조회후 response로 전달해 주었는데 @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id,request.getName()); Member findMember = memberService.findOne(id); return new UpdateMemberResponse(findMember.getId(), findMember.getName()); } 아래와 같이 하지 않은 이유가 있을까요?? @PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2(@PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id, request.getName()); return new UpdateMemberResponse(id, request.getName()); }
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
nest.js docker파일을 실행하였는데 정상적으로 돌아가는데 이상하게 매번 [Nest] 42 - 08/13/2023, 7:22:38 AM ERROR [ExceptionHandler] Access denied for user ''@'172.19.0.3' (using password: YES) 이 오류가 나더라구요 그래서 확인해보니까 user 권한을 주면된다는데 제가 env파일 root로 두개다 설정을 했는데 왜 저러는지 모르겠는거랑 error에 user부분이 ''이렇게만 나오는 이유를 잘모르겠습니다 그리고 페이지에 들어가니 페이지가 작동되지않는다는 오류와 전송된 데이터가 없다는 오류만 나옵니다. FROM node:16 COPY ./package.json /myfolder/ COPY ./yarn.lock /myfolder/ WORKDIR /myfolder/ RUN yarn install # packge.json이 변경되지않았는데 매번 새롭게 다운받는게 비효율적이라서 packge.json과 yarn.lock을 미리 복사 # 캐시에서 확인할때 변경되지않으면 다음부터는 다운받지않고 바로 가져올수있기때문에 # 코드를 변경하면 이부분만 캐시가 깨지기때문에 속도가 더빠르다 COPY . /myfolder/ # WORKDIR /myfolder/ # RUN yarn install # . 했을 당시의 소스코드를 기억함으로 캐시에서의 소스코드와 다르면 다시 카피해서 가져옴 # 한번 캐시가 깨지기 시작하면 그아래부분부터는 전부깨서 전부다시 다운받거나 새로시작 -> 어디가 변경된지 몰라서 영향을 줄수있기때문에 CMD yarn start:dev version: '3.7' # 컴퓨터들 # 들여쓰기가 부모자식관계로 인식해서 중요함 services: # 변수명처럼 자유롭게 작성할수있음 / 컴퓨터명 my-backend: build: # 파일경로 context: . # 파일명 dockerfile: Dockerfile volumes: - ./src:/myfolder/src # 포트포워딩 ports: - 3000:3000 env_file: - ./.env.docker # 도커를 실행할때 사용하는 환경변수파일설정 my-database: # platform: linux/86_64 # cpu등의 문제가있을때 # 설치해서 바로실행되는경우 dockerfile없이 image: mysql:latest # mysql은 비밀번호가 있어야지 작동한다 설치하고 사용할 database도 만들어주어야 작동한다 # mysql에 접속해서 자동적으로 myproject명으로 설정된 데이터베이스를 만들어준다 environment: MYSQL_DATABASE: 'starbucksDB' MYSQL_ROOT_PASSWORD: 'root' # 처음으로 들어갈때 비밀번호를 설정 ports: - 3306:3306 # 하지만 네임리졸루션으로 express에서 접속가능
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
프론트,백엔드,몽고db로 api 조회하는게 강의 듣고 복습폴더에서 포트번호 똑같이 4000으로 했다가 에러나서 3000으로 바꿨더니 해결됐어요 근데 어쩔땐 복습폴더에서 포트번호 4000으로 맞춰놓고 도커 접속했더니 잘만 되더라구요 에러나는 기준이 궁금해요
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
그냥 서버만 관리하면 되니까 새로운 아이디어가 떠오르거나 창의성 같은 거는 필요하지 않나요?
미해결
비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
강의자료 사이트 접속이 안되네요.
미해결
[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
안녕하세요. 이번에 새로 수강할려고 하는데 혹시 모든 섹션 강의자료는 어디서 다운받을 수 있을까요?
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
안녕하세요 원두멘토님! 13챕터에서 graphql-upload 버전이슈로 버전을 낮춰 대응하셔 작동이 되게 알려주셨습니다. 확인을 해보니 apollo server에서 원래 패키지에 포함시켰던 디펜젼시를 csrf문제로 포함시키지 않고 분리를 해서 버전관리가 되지 않아서 생긴 문제인것 같았습니다. 제가 궁금한 점은 graphql-upload로 클라이언트에게 업로드 기능을 제공해주는 것이 아닌 다른 방법으로 grpahql에서 upload기능을 제공해 줄수있는지 궁금합니다. 보안상 좋지 않고 버전관리가 되지 않는 패키지는 사용하는것이 나중을 생각했을때 더 개발난이도가 올라갈 것 같다 생각이 들었습니다. 제가 생각한 방법은 multer를 사용하는 건데 그렇게 하려면 restapi로 제공을 해줘야 하는데 grpahql 과 restapi를 같이 사용해서 api를 제공해줘야하는데 이 또한 가능하거나 추천하시는지 궁금합니다.
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
entity.ts파일에서 input으로 사용할 틀을 resolver에서 Mutation쪽 service의 매개변수로 넘겨줄려고 사용했는데 Argument of type '{ inputStarbucks: InputStarbucks; }' is not assignable to parameter of type 'InputStarbucks' 이러한 오류가 나서 찾아보니 해당 타입으로는 변수타입을 지정할수없어서 변경하라고했는데 class틀도 문제가 없는데 왜 오류가 나는지 잘모르겠습니다. import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { StarbucksService } from './starbucks.service'; import { InputStarbucks } from './entities/starbucks.input'; import { Starbucks } from './entities/starbucks.entity'; @Resolver() export class StarbucksResolver { constructor( private readonly starbucksService: StarbucksService, // prettier때문에 아래로 내려쓰기가 안되니까 주석달기 ) {} @Query(() => [Starbucks], { nullable: true }) // graphql에서는 배열을 [Board]식으로 사용 아래에서는 Board[]라고 사용했는데 fetchBoards(): Starbucks[] { return this.starbucksService.findAll(); } @Mutation(() => String) creatBoard( // 한번에 사용하는 방식 @Args('inputStarbucks') inputStarbucks: InputStarbucks, // graphql에서 데이터를 입력받고 변수명과 타입을 지정 // graphql에서 writer로 입력받은값을 writer라는 변수에 받고 데이터 타입은 string으로 지정 ): string { return this.starbucksService.create({ inputStarbucks }); // return을 작성해야 사용한 api쪽 리턴이 module쪽까지 전달됨 } } import { Injectable, Scope } from '@nestjs/common'; import { Starbucks } from './entities/starbucks.entity'; import { InputStarbucks } from './entities/starbucks.input'; @Injectable({ scope: Scope.DEFAULT }) export class StarbucksService { findAll(): Starbucks[] { // entity에서 만든 Board의 배열형태를 가져와서 사용 const result = [ { number: 1, writer: '짱구', title: '제목', contents: '내용이요' }, { number: 2, writer: '짱구2', title: '제목2', contents: '내용이요2' }, { number: 3, writer: '짱구3', title: '제목3', contents: '내용이요3' }, ]; return result; } create({ inputStarbucks }: InputStarbucks): string { console.log(inputStarbucks.writer); // 데이터 타입의 클래스의 명과 동일해야한다 .writer이부분이 console.log(inputStarbucks.title); console.log(inputStarbucks.contents); return '게시물 등록 성공'; } } import { Field, InputType } from '@nestjs/graphql'; // @ObjectType() // 이렇게 작성하면 type으로 나옴 . 리턴타입이 type이었을때 // mutation의 경우에는 input으로 작성했다 @InputType() export class InputStarbucks { @Field(() => String) writer: string; @Field(() => String) title: string; @Field(() => String) contents: string; } // Graphql에서 사용하기위해서 graphql 데이터 타입지정
해결됨
나도코딩의 자바 기본편 - 풀코스 (20시간)
클래스의 상속과 관련된 다형성은 부모객체로 인스턴스를 생성하여 부모클래스의 메소드와 자식클래스 메소드 2가지를 업/다운캐스팅하여 자유롭게 호출할 수 있지만, 단일상속이라는 한계 때문에 다른 부모클래스의 메소드는 호출할 수가 없잖아요? 그래서 인터페이스가 존재하는 이유구요. 마찬가지로, 인스턴스를 생성할 때 다형성을 활용하여 인터페이스 객체(부모 객체)로 생성할 수는 있지만, 이것은 ISP(Interface Segregation Principle)원칙에 따라 detect(), report() 2개의 메소드를 호출하려면 Detectable, Reportable 객체 2개를 생성해야 하기 때문에 메모리가 효율적으로 관리되지 못하는거구요. 따라서 구상클래스인 FactoryCam에서 인터페이스 변수를 직접 생성하고 setter함수로 필요한 인터페이스 변수를 주입한 다음(Dependency Injection) , 주입당한 객체는 인터페이스에 의존하기 때문에(Reportable, Detectable) 동시에 기능이 다른 2가지 메소드를 호출할 수 있는거구요.(Dependency Inversion Principle) ... 과정을 이해하였지만 말로 풀어내니까 굉장히 장황하군요 사실 이 부분은 인터페이스 문법이라기보다는 디자인 패턴과 관련이 있지 않나싶습니다.
미해결
Do it! 알고리즘 코딩테스트 with JAVA
방향 그래프 무방향 그래프에 따라서 자료구조에 자료를 저장하는 방법이 다르다고 하셨습니다. 그런데 지금 이 문제에서는 방향그래프 아닌가요?? 간선,엣지들을 보면 모두 방향이 있는 거 같은데, 왜 무방향그래프를 저장할 때처럼 arraylist에 값을 저장하는지 모르겠습니다.
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
import { ApolloDriver, ApolloDriverAsyncConfig as ad } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ GraphQLModule.forRoot<ad>({ // forRoot의 데이터타입지정 <> -> 제네릭 부분 driver: ApolloDriver, autoSchemaFile: 'src/commons/graphql/schema.gql', }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {} import { Field, Int, ObjectType } from '@nestjs/graphql'; @ObjectType() // graphql에서 type을 의미함 예)type Board export class Board { @Field(() => Int) // Int를 import를 해서 사용해야한다 number: number; // ;을 기준으로 구분함 @Field(() => String) // graphql을 위한 용도 writer: string; @Field(() => String) title: string; @Field(() => String) contents: string; } 단순히 graphql shema를 자동생성 해주는 거만 테스트할려고했는데 경로를 잡아주니 에러가나와서 true도 해보고 playground : true도 추가해보고했는데 계속 해서 오류가 나고 계속해서 오류는 type이 존재하지않는다고해서 이유를 모르겠습니다 Argument of type '{ driver: typeof ApolloDriver; autoSchemaFile: string; }' is not assignable to parameter of type 'ApolloDriverAsyncConfig'. Object literal may only specify known properties, and 'autoSchemaFile' does not exist in type 'GqlModuleAsyncOptions<ApolloDriverConfig, GqlOptionsFactory<ApolloDriverConfig>>'.ts(2345)
미해결
실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
git에서 app 프로젝트 받아서 docker 깔고 docker compose build / docker compose up 하면 0.0.0.0:8000에서 안되고127.0.0.1:8000 에서 동작하는 것 같은데 제가 뭘 빼먹은걸까요?
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
해당 강의에서 product service의 create 함수를 아래와 같이 코딩하는 것을 가르쳐주셨는데요. 아래 코드에서 const tags = [...prevTags, ...newTags.indentifiers]; 부분에서 prevTags에도 .identifiers가 붙어야 될 것같다는 생각을 했습니다. prevTags는 this.productsTagsRepository.find 함수를 통해서 찾아오는데, 이는 where 조건문에 의해 name이 tagNames인 것을 찾아내어 productTags의 프로퍼티인 id와 name을 둘다 return 하지 않나요? 이전 조회API를 만드는 강의에서도 find 함수를 통해 id만 가져오는 것이 아닌 다른 칼럼들도 모두 가져왔었습니다. 그런데 prevTags 뒤에 .indentifiers를 붙이니 에러가 뜨더라구요... 분명 조회API 강의에서는 find를 통해 모든 칼럼을 다 가져왔던것 같은데, 왜 이번에는 똑같은 find 함수를 통해 id만 리턴이 되는 건가요? async create({ createProductInput }: IProductServiceCreate): Promise<Product> { const { productSalesLocation, productCategory, productTags, ...product } = createProductInput; const result = await this.productsSalesLocationService.create({ productSalesLocation }); const tagNames = productTags.map((el) => el.replace('#', '')); const prevTags = await this.productsTagsRepository.find({ where: { name: In(tagNames) }, }); const temp = []; tagNames.forEach((el) => { const isExist = prevTags.find((prevEl) => el === prevEl.name); if (!isExist) temp.push({ name: el }); }); const newTags = await this.productsTagsRepository.insert(temp); const tags = [...prevTags, ...newTags.identifiers]; const result2 = this.productsRepository.save({ ...product, productSalesLocation: result, productCategory: productCategory, productTags: tags, }); return result2; }
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
실전 예제 4를 하고 있는데 create로 설정하면 메인메서드 실행할 때마다 테이블 드랍되고 실행되어야하는데 아래와 같은 오류가 자꾸 발생하면서 실행이 안되는데 왜그럴까요 ㅠㅠ 수동으로 데이터베이스에서 드랍하고 실행하거나 update 등으로만 설정해야 잘 작동되는데 왜그럴까요... /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=49362:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/hwang-gyuhyeog/Desktop/JPA/1.자바 ORM 표준 JPA 프로그래밍-기본편/jpashop/target/classes:/Users/hwang-gyuhyeog/.m2/repository/org/hibernate/hibernate-entitymanager/5.3.10.Final/hibernate-entitymanager-5.3.10.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/org/hibernate/hibernate-core/5.3.10.Final/hibernate-core-5.3.10.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/org/javassist/javassist/3.23.2-GA/javassist-3.23.2-GA.jar:/Users/hwang-gyuhyeog/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/hwang-gyuhyeog/.m2/repository/org/jboss/jandex/2.0.5.Final/jandex-2.0.5.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/com/fasterxml/classmate/1.3.4/classmate-1.3.4.jar:/Users/hwang-gyuhyeog/.m2/repository/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar:/Users/hwang-gyuhyeog/.m2/repository/org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar:/Users/hwang-gyuhyeog/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.0.4.Final/hibernate-commons-annotations-5.0.4.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar:/Users/hwang-gyuhyeog/.m2/repository/net/bytebuddy/byte-buddy/1.9.5/byte-buddy-1.9.5.jar:/Users/hwang-gyuhyeog/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final/jboss-transaction-api_1.2_spec-1.1.1.Final.jar:/Users/hwang-gyuhyeog/.m2/repository/com/h2database/h2/1.4.200/h2-1.4.200.jar:/Users/hwang-gyuhyeog/.m2/repository/javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar jpabook.jpashop.JpaMain 8월 08, 2023 10:39:56 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO: HHH000204: Processing PersistenceUnitInfo [ name: hello ...] 8월 08, 2023 10:39:56 오후 org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core { 5.3.10.Final } 8월 08, 2023 10:39:56 오후 org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found 8월 08, 2023 10:39:57 오후 org.hibernate.annotations.common.reflection.java .JavaReflectionManager <clinit> INFO: HCANN000001: Hibernate Commons Annotations { 5.0.4.Final } 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:tcp:// localhost/~/jpashop ] 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: Connection properties: {user=sa} 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit mode: false 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init> INFO: HHH000115: Hibernate connection pool size: 20 (min=1) 8월 08, 2023 10:39:57 오후 org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect Hibernate: drop table Category if exists Hibernate: drop table CATEGORY_ITEM if exists Hibernate: drop table Delivery if exists Hibernate: drop table Item if exists Hibernate: drop table Member if exists Hibernate: drop table OrderItem if exists Hibernate: drop table ORDERS if exists Hibernate: drop sequence if exists hibernate_sequence Hibernate: create sequence hibernate_sequence start with 1 increment by 1 8월 08, 2023 10:39:57 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@7f5b9db] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Category if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Category if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString( SchemaDropperImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings( SchemaDropperImpl.java:359 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata( SchemaDropperImpl.java:241 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop( SchemaDropperImpl.java:154 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:126 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:112 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:144 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "CATEGORY" because "FKJIP0OR3VEMIXCCL6VX0KLUJ03" depends on it; SQL statement: drop table Category if e [90107-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.command.ddl.DropTable.prepareDrop( DropTable.java:97 ) at org.h2.command.ddl.DropTable.update( DropTable.java:121 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Delivery if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Delivery if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString( SchemaDropperImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings( SchemaDropperImpl.java:359 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata( SchemaDropperImpl.java:241 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop( SchemaDropperImpl.java:154 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:126 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:112 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:144 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "DELIVERY" because "FKDBS21F1YI0COXY9Y0KXW4G9JF" depends on it; SQL statement: drop table Delivery if e [90107-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.command.ddl.DropTable.prepareDrop( DropTable.java:97 ) at org.h2.command.ddl.DropTable.update( DropTable.java:121 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Item if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Item if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString( SchemaDropperImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings( SchemaDropperImpl.java:359 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata( SchemaDropperImpl.java:241 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop( SchemaDropperImpl.java:154 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:126 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:112 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:144 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "ITEM" because "FK75MRPPRV8OIGH00Y92TIBW7ID, FK2SRBE8WJBANR4VTKRSB8ATQ7O, FKQQWSWM36Y8UQOH9EMTORUOXCV, FKABGE9EQALSPCEJIJ53RAT7PJH" depends on it; SQL statement: drop table Item if e [90107-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.command.ddl.DropTable.prepareDrop( DropTable.java:97 ) at org.h2.command.ddl.DropTable.update( DropTable.java:121 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Member if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Member if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString( SchemaDropperImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings( SchemaDropperImpl.java:359 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata( SchemaDropperImpl.java:241 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop( SchemaDropperImpl.java:154 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:126 ) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop( SchemaDropperImpl.java:112 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:144 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "MEMBER" because "FKH0DB7KQR88ED8HQTCQW3JKCIA" depends on it; SQL statement: drop table Member if e [90107-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.command.ddl.DropTable.prepareDrop( DropTable.java:97 ) at org.h2.command.ddl.DropTable.update( DropTable.java:121 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@5c723f2d] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Category ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Category ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:315 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "CATEGORY" already exists; SQL statement: create table Category ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) [42101-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.CreateTable.update( CreateTable.java:91 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:453 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Delivery ( id bigint not null, city varchar(255), deliveryStatus integer, street varchar(255), zipcode varchar(255), primary key (id) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Delivery ( id bigint not null, city varchar(255), deliveryStatus integer, street varchar(255), zipcode varchar(255), primary key (id) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:315 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "DELIVERY" already exists; SQL statement: create table Delivery ( id bigint not null, city varchar(255), deliveryStatus integer, street varchar(255), zipcode varchar(255), primary key (id) [42101-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.CreateTable.update( CreateTable.java:91 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:453 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, stockQuantity integer not null, actor varchar(255), director varchar(255), author varchar(255), isbn varchar(255), artist varchar(255), etc varchar(255), primary key (ITEM_ID) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, stockQuantity integer not null, actor varchar(255), director varchar(255), author varchar(255), isbn varchar(255), artist varchar(255), etc varchar(255), primary key (ITEM_ID) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:315 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEM" already exists; SQL statement: create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, stockQuantity integer not null, actor varchar(255), director varchar(255), author varchar(255), isbn varchar(255), artist varchar(255), etc varchar(255), primary key (ITEM_ID) [42101-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.CreateTable.update( CreateTable.java:91 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:453 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table Member ( MEMBER_ID bigint not null, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (MEMBER_ID) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table Member ( MEMBER_ID bigint not null, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (MEMBER_ID) )" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:315 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MEMBER" already exists; SQL statement: create table Member ( MEMBER_ID bigint not null, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (MEMBER_ID) [42101-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:502 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.CreateTable.update( CreateTable.java:91 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:453 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " alter table Category add constraint FK8tepc1qkmluodspg6tnliwhit foreign key (PARENT_ID) references Category" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table Category add constraint FK8tepc1qkmluodspg6tnliwhit foreign key (PARENT_ID) references Category" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:67 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString( SchemaCreatorImpl.java:440 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings( SchemaCreatorImpl.java:424 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata( SchemaCreatorImpl.java:375 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation( SchemaCreatorImpl.java:166 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:135 ) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation( SchemaCreatorImpl.java:121 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction( SchemaManagementToolCoordinator.java:155 ) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process( SchemaManagementToolCoordinator.java:72 ) at org.hibernate.internal.SessionFactoryImpl.<init>( SessionFactoryImpl.java:310 ) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build ( SessionFactoryBuilderImpl.java:467 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:939 ) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory( HibernatePersistenceProvider.java:56 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:79 ) at javax.persistence.Persistence.createEntityManagerFactory( Persistence.java:54 ) at jpabook.jpashop.JpaMain.main( JpaMain.java:14 ) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Constraint "FK8TEPC1QKMLUODSPG6TNLIWHIT" already exists; SQL statement: alter table Category add constraint FK8tepc1qkmluodspg6tnliwhit foreign key (PARENT_ID) references Cat [90045-214] at org.h2.message.DbException.getJdbcSQLException( DbException.java:632 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:477 ) at org.h2.message.DbException.get( DbException.java:223 ) at org.h2.message.DbException.get( DbException.java:199 ) at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate( AlterTableAddConstraint.java:109 ) at org.h2.command.ddl.AlterTableAddConstraint.update( AlterTableAddConstraint.java:72 ) at org.h2.command.ddl.AlterTable.update( AlterTable.java:46 ) at org.h2.command.CommandContainer.update( CommandContainer.java:169 ) at org.h2.command.Command.executeUpdate( Command.java:252 ) at org.h2.server.TcpServerThread.process( TcpServerThread.java:408 ) at org.h2.server.TcpServerThread.run ( TcpServerThread.java:191 ) at java.base/java.lang.Thread.run( Thread.java:834 ) at org.h2.message.DbException.getJdbcSQLException( DbException.java:576 ) at org.h2.engine.SessionRemote.done( SessionRemote.java:611 ) at org.h2.command.CommandRemote.executeUpdate( CommandRemote.java:237 ) at org.h2.jdbc.JdbcStatement.executeInternal( JdbcStatement.java:228 ) at org.h2.jdbc.JdbcStatement.execute( JdbcStatement.java:201 ) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept( GenerationTargetToDatabase.java:54 ) ... 15 more Hibernate: create table Category ( id bigint not null, name varchar(255), PARENT_ID bigint, primary key (id) ) Hibernate: create table CATEGORY_ITEM ( CATEGORY_ID bigint not null, ITEM_ID bigint not null ) Hibernate: create table Delivery ( id bigint not null, city varchar(255), deliveryStatus integer, street varchar(255), zipcode varchar(255), primary key (id) ) Hibernate: create table Item ( DTYPE varchar(31) not null, ITEM_ID bigint not null, name varchar(255), price integer not null, stockQuantity integer not null, actor varchar(255), director varchar(255), author varchar(255), isbn varchar(255), artist varchar(255), etc varchar(255), primary key (ITEM_ID) ) Hibernate: create table Member ( MEMBER_ID bigint not null, city varchar(255), name varchar(255), street varchar(255), zipcode varchar(255), primary key (MEMBER_ID) ) Hibernate: create table OrderItem ( ORDER_ITEM_ID bigint not null, ITEM_ID bigint, ORDER_ID bigint, primary key (ORDER_ITEM_ID) ) Hibernate: create table ORDERS ( ORDER_ID bigint not null, orderDate timestamp, status varchar(255), DELIVERY_ID bigint, MEMBER_ID bigint, primary key (ORDER_ID) ) Hibernate: alter table Category add constraint FK8tepc1qkmluodspg6tnliwhit foreign key (PARENT_ID) references Category Hibernate: alter table CATEGORY_ITEM add constraint FKf1uerpnmn49vl1spbbplgxaun foreign key (ITEM_ID) references Item Hibernate: alter table CATEGORY_ITEM add constraint FKjip0or3vemixccl6vx0kluj03 foreign key (CATEGORY_ID) references Category Hibernate: alter table OrderItem add constraint FKabge9eqalspcejij53rat7pjh foreign key (ITEM_ID) references Item Hibernate: alter table OrderItem add constraint FKk7lmf97wukpquk6d8blxy5neq foreign key (ORDER_ID) references ORDERS Hibernate: alter table ORDERS add constraint FKdbs21f1yi0coxy9y0kxw4g9jf foreign key (DELIVERY_ID) references Delivery Hibernate: alter table ORDERS add constraint FKh0db7kqr88ed8hqtcqw3jkcia foreign key (MEMBER_ID) references Member 8월 08, 2023 10:39:57 오후 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@30f74e79' Hibernate: call next value for hibernate_sequence Hibernate: /* insert jpabook.jpashop.domain.Book */ insert into Item (name, price, stockQuantity, author, isbn, DTYPE, ITEM_ID) values (?, ?, ?, ?, ?, 'Book', ?) 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 23505, SQLState: 23505 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.ITEM(ITEM_ID) ( /* key:1 */ 'Book', CAST(1 AS BIGINT), 'dd', 0, 0, NULL, NULL, 'abc', NULL, NULL, NULL)"; SQL statement: /* insert jpabook.jpashop.domain.Book */ insert into Item (name, price, stockQuantity, author, isbn, DTYPE, I [23505-200] 8월 08, 2023 10:39:57 오후 org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure ERROR: HHH000346: Error during managed flush [org.hibernate.exception.ConstraintViolationException: could not execute statement] 8월 08, 2023 10:39:57 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp:// localhost/~/jpashop ] Process finished with exit code 0
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 강의 내에서 스프링 없이 테스트 코드를 짜는 것이 좋다고 하신 것을 보고 실제로 테스트 코드는 스프링을 의존하지 않고 짜는 것이 무엇인지 궁금해졌습니다. 실제로 강의에서 작성하는 내용 중에, 어느 부분이 스프링에 의존해서 테스트를 한 것인지, 또한 그러한 스프링 의존 테스트를 순수 자바 기반의 테스트로 바꾸며 어떤 식으로 나오게 될지 궁금합니다. 감사합니다.
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
안녕하세요! 강의 잘 듣고 있는 학생입니다. 1:1관계등록 강의에서는 product sales location 관계를 등록할 때는 따로 sale location에 대한 모듈 파일과 리졸버 파일은 만들지 않고 서비스 파일만 만들어서 관계를 등록하였는데, 1:다 관계등록 강의에서는 product category에 대한 모듈파일과 리졸버 파일까지 만들어 관계등록을 하는 것으로 가르쳐주셨습니다. 코드 구성은 크게 다르지 않은 것 같은데, 카테고리 관계등록 강의에서는 일대다 관계이기 때문에 리졸버와 모듈파일까지 만들어서 관계등록을 하는 것인가요? 그렇다면 이유를 좀 알 수 있을까요..? 코드 구성은 비슷하고, 차이라고 할 것은 1대1이냐 1대다이냐 밖에 없는 것 같은데 이렇게 모듈파일을 만들어주고 안만들어주고의 차이가 발생하는 이유가 이해가 안가서요 ㅠ
해결됨
[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
ERROR [TypeOrmModule] Unable to connect to the database이 에러가 일어났다 안일어났다가해요. nestjs에서 typeorm으로 mysql에 table entity를 저장해주는 과정에서 db에 접속이 안되었다. 1. TypeOrmModul.forRoot안의 오타확인 -> 없었다 2. Entity에 이상이 있는지확인 -> 없었다 3. 구글링에서는 대부분이 오타문제이거나 데이터베이스를 생성해주지않았다는 문제라고했다 -> 데이터베이스도 켜져있었고 티미널이랑 dbeaver에서도 mysql과 접속이 되고있는것으로 확인 4. 컴퓨터가 버그로 안되는 걸로 예상해 잠시 종료했다가 실행 -> 역시안됐다 5. 비밀번호를 숫자로 입력해서 string이아닌 number형식으로 작성했는데 password는 string 타입만 작성가능하다고 오류가나왔다 - 문제해결 -> root 비밀번호를 string타입으로 변경하니까 오류가 해결되었다 -> 숫자로 입력하니 넘어오는 과정에서 숫자가 string형태로 변경되어 접속오류로 판명 -> 비밀번호는 문자열로..... -> 이게 전날에 연결이 안되어서 해본결과였고 오늘 했을때에는 연결이되었는데 두번째 접속을 하니까 연결이 안되서 dbeaver에서랑 터미널에서 접속을 했을때는 문제가 없었습니다. 왜계속해서 이런오류가 불규칙적으로 일어나는지 모르겠습니다. 그리고 두번째 질문은 nestjs독스에서는 synchronize: true,이부분을 false로 권장하고있는데 그이유로는 데이터 손상?유실이 있을수있다고 써져있는데 수업중에는 true로되어야지 동기화가 된다고 하셔서 이부분도 설명 부탁드릴수있을까요 마지막으로 세번째 질문으로는 dbeaver에서재연결요청을 했을때 Datasource was invalidated Live connection count: 2/2 이렇게 나오는데 이러면 mysql이 켜져있는 상태인건가요? 해당 database는 다볼수있는데 offline인데 그전에 연결이되서 볼수있는건가하는 의심이 들어서질문드렸습니다 import { ApolloDriver, ApolloDriverConfig as ad } from '@nestjs/apollo'; import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { BoardsModule } from './apis/boards/boards.module'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Board } from './apis/boards/entities/board.entity'; @Module({ imports: [ BoardsModule, // ProductsModule, // UsersModule, GraphQLModule.forRoot<ad>({ // forRoot의 데이터타입지정 <> -> 제네릭 부분 driver: ApolloDriver, autoSchemaFile: 'src/commons/graphql/schema.gql', // 자동으로 스키마 파일을 생성 .gql로마무리 해주기 // 실행은 package.json이 있는 위치에선 // graphql은 스키마 파일이 있어야 실행이 가능하다 // 자동이든 직접 작성하든 작성해주어야한다. }), TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', // 도커할때는 네임레졸루션이 들어가야함 port: 3306, username: 'root', password: 'root', database: 'myproject', entities: [Board], // 해당하는 테이블을 작성 logging: true, // 어떻게 변형되어서 넘어가는지 디버깅 synchronize: true, // entity.ts와 db를 동기화 해주는 작업 }), ], // 합치는 부분 }) export class AppModule {}
해결됨
실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
민감한 URL 이라든지 환경변수를 통해 사용하고 싶은게 있을 때 강사님께서는 어떻게 관리하시는지 궁금합니다. 그냥 UNIX 환경에서 export url = http://example.com 이런식으로 하고 os 모듈을 통해 쓰고있는데, 더 보안상 좋은 방법이 있을까요?