안녕하세요, JPA 강의 잘 듣고 있습니다. 실전예제2 실습을 진행하면서 아래와 같은 에러 메시지가 발생하였습니다. H2 데이터베이스에는, ORDER 테이블을 제외한 다른 테이블(+인덱스 포함) 및 시퀀스는 생성되었으며, ORDER 테이블만 생성되지 않았습니다. 코드 진행 시 어떤 실수를 했기에 발생한 문제인지 알 수 있을까요? 코드 압축파일도 첨부합니다. ( 링크 ) 2월 08, 2023 4:53:12 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@40712ee9] 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. 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table ORDER if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table ORDER 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:12) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a drop table [*]ORDER if exists"; expected "identifier"; SQL statement: drop table ORDER if exists [42001-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.getSyntaxError(DbException.java:261) at org.h2.command.Parser.readIdentifier(Parser.java:5656) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5616) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5645) at org.h2.command.Parser.parseDrop(Parser.java:2188) at org.h2.command.Parser.parsePrepared(Parser.java:776) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:480) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 2월 08, 2023 4:53:12 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@34f392be] 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. 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " create table ORDER ( ORDER_ID bigint not null, orderDate timestamp, status varchar(255), MEMBER_ID bigint, primary key (ORDER_ID) )" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " create table ORDER ( ORDER_ID bigint not null, orderDate timestamp, status varchar(255), MEMBER_ID bigint, primary key (ORDER_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:12) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a create table [*]ORDER (\000d\000a ORDER_ID bigint not null,\000d\000a orderDate timestamp,\000d\000a status varchar(255),\000d\000a MEMBER_ID bigint,\000d\000a primary key (ORDER_ID)\000d\000a )"; expected "identifier"; SQL statement: create table ORDER ( ORDER_ID bigint not null, orderDate timestamp, status varchar(255), MEMBER_ID bigint, primary key (ORDER_ID) ) [42001-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.getSyntaxError(DbException.java:261) at org.h2.command.Parser.readIdentifier(Parser.java:5656) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5616) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5645) at org.h2.command.Parser.parseCreateTable(Parser.java:9253) at org.h2.command.Parser.parseCreate(Parser.java:6784) at org.h2.command.Parser.parsePrepared(Parser.java:763) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:480) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " alter table ORDER add constraint FKg2e0q3p7qbn6vhhwweifmdmd5 foreign key (MEMBER_ID) references MEMBER" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table ORDER add constraint FKg2e0q3p7qbn6vhhwweifmdmd5 foreign key (MEMBER_ID) references MEMBER" 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:12) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a alter table [*]ORDER \000d\000a add constraint FKg2e0q3p7qbn6vhhwweifmdmd5 \000d\000a foreign key (MEMBER_ID) \000d\000a references MEMBER"; expected "identifier"; SQL statement: alter table ORDER add constraint FKg2e0q3p7qbn6vhhwweifmdmd5 foreign key (MEMBER_ID) references MEMBER [42001-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.getSyntaxError(DbException.java:261) at org.h2.command.Parser.readIdentifier(Parser.java:5656) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5616) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5645) at org.h2.command.Parser.parseAlterTable(Parser.java:8476) at org.h2.command.Parser.parseAlter(Parser.java:7548) at org.h2.command.Parser.parsePrepared(Parser.java:747) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:480) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " alter table ORDER_ITEM add constraint FK1pnpc71663ei4208mahu6w8os foreign key (ORDER_ID) references ORDER" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table ORDER_ITEM add constraint FK1pnpc71663ei4208mahu6w8os foreign key (ORDER_ID) references ORDER" 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:12) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a alter table ORDER_ITEM \000d\000a add constraint FK1pnpc71663ei4208mahu6w8os \000d\000a foreign key (ORDER_ID) \000d\000a references [*]ORDER"; expected "identifier"; SQL statement: alter table ORDER_ITEM add constraint FK1pnpc71663ei4208mahu6w8os foreign key (ORDER_ID) references ORDER [42001-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.getSyntaxError(DbException.java:261) at org.h2.command.Parser.readIdentifier(Parser.java:5656) at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:5616) at org.h2.command.Parser.parseReferences(Parser.java:9180) at org.h2.command.Parser.parseTableConstraintIf(Parser.java:9114) at org.h2.command.Parser.parseAlterTable(Parser.java:8479) at org.h2.command.Parser.parseAlter(Parser.java:7548) at org.h2.command.Parser.parsePrepared(Parser.java:747) at org.h2.command.Parser.parse(Parser.java:689) at org.h2.command.Parser.parse(Parser.java:661) at org.h2.command.Parser.prepareCommand(Parser.java:569) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) at org.h2.server.TcpServerThread.process(TcpServerThread.java:288) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:833) at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) at org.h2.engine.SessionRemote.readException(SessionRemote.java:637) at org.h2.engine.SessionRemote.done(SessionRemote.java:606) at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:480) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more 2월 08, 2023 4:53:12 오후 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@12968227' 2월 08, 2023 4:53:12 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test]
DB에 Insert 하려고 할 때 TypeOrm에서 Default 값을 넣어주지 않아 에러가 발생했습니다. (CreatedAt, UpdatedAt 컬럼) 그래서 처음에는 Database에서 Table에 Default값을 세팅하고 사용했는데요. 어떤 분이 질문 하신걸 보고 다시 수정해 보는 중입니다. 강의에 있는 소스는 @Column("datetime", { name: "createdAt", default: () => "CURRENT_TIMESTAMP"}) ... 이렇게 적혀있더군요. 근데 Github의 소스에는 @CreateDateColumn() createdAt: Data; 로만 적혀있었습니다. 그리고 @CreatedDateColumn()은 Special Column이라고 아래와 같이 설명이 있던데요. @CreateDateColumn is a special column that is automatically set to the entity's insertion date. You don't need to set this column - it will be automatically set. 저는 이 얘기를 TypeOrm에서 자동으로 입력해 주는 값으로 이해했는데... 막상 해보면 안되더라고요. 그래서... 만약 Github의 소스와 같이 @CreateDateColumn... 으로 사용하려면 Database에서 Default값을 설정해주어야 하는지 (그렇다면 @CreateDateColumn..은 자동 세팅되는 것이 아니겠죠...) 아니면 영상 강의 상처럼... default() => "CURRENT_TIMESTAMPT"... 로 사용해야 할지요 (물론 영상 강의의 소스는 Database에 그렇게 설정되어 있으니 그렇게 나온것이겠지만요..)
안녕하세요, 강의 잘 듣고 있습니다. 지금까지 발생한 질문들에 대해서 문의드리려 합니다. Transactional 을 주석처리해도 해당 StockService 와 Repository 인터페이스가 잘 동작하는 모습을 확인할 수 있습니다. (듣다가도 당연히 오류날줄 알았습니다)Data Jpa 를 활요하지 않고 일반적인 Jpa Repository 를 직접 만들어서 (em을 사용하는) 시도를 해봤는데 Transactional 이 없으니 예상했던 오류가 그대로 발생 하는 것 같았습니다. JpaRepository 인터페이스에 들어가보니, @NoRepositoryBean 이라는 어노테이션만이 붙어 있고, 그냥 다른 Repo를 만들지 못하도록 달아져 있는 것이라는 것을 확인하였습니다. 작동하는 이유가 Data Jpa 가 제공해주는 Repository interface 를 사용해서 인 것 같은데, 어떤 원리로 작동이 가능한건지 알 수 있을까요? Synchronize 를 사용해도 우선 동작을 하는 이유는 @Transactional 의 동작 방식 때문이라고 설명해주시며, 예시 클래스를 짜서 보여주셨습니다. public void decrease(){ startTransaction(); myStockService.decrease(); endTransaction(); } 트랜젝션이란 DB와의 통신을 위해 연결을 짓는 행위로 알고 있는데, DB는 공유 자원인 만큼 당연히 동시성 제어가 되어 있어야 하는 것이 아닌가 생각이 들었습니다. 가령, 위에서 startTx, endTx 를 하는 부분에서 세마포어 처리 등을 해서 교착상태가 발생하지 않도록 설계가 되어 있어야 하지 않나 싶은 생각이 들었는데, @Transactional 에서 그런 것을 처리 하지 않아서 이와 같은 상황이 발생하는게 맞을까요? (강사님한테 문의드리는게 좀 이상한 부분일 수도 있지만, 왜 그런 처리를 안해놨을지 궁금.. 합니다) 감사합니다.
안녕하세요 캡틴판교님 강의를 열심히 듣고있는중입니다. 그러던 중, node버전을 미리말씀해주셔서 10.16.3 으로 맞춰서 하고있는데 제가 소스분석용으로 받아놓은 소스가 있는데 package.json에 들어가도 노드 버전에 대한건 없는거같은데 알아볼수있는 방법이 있을까요?? 그리고 node버전이 달라도 호환이 되는 정도는 어떻게 알수있을까요??
설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
안녕하세요 맛비님. 이번 강의를 들으면서 수업 관련 개념을 명확하게 하고자 용어 정리를 하고자 합니다! 지금까지 해온 것들을 보면, CNN 연산 모듈을 설계했냐? -> 그렇다. input feature map을 input으로 넣어 output feature map을 도출했냐? -> 아니다. kernel의 size만큼 input feature map에서 window 해서 kernel size의 channel input만큼 해당하는 부분을 Convolution 연산하였다. 최종적으로는 output feature map 1포인트의 channel output만큼 해당하는 값을 구했다. 라고 할 수 있을까요? 처음 듣는 사람이 window라는 말을 잘 이해하지 못한다면 어떻게 쉽게 말할 수 있을까요?
현재 강의에 목업으로 된 테스트 코드가 작성되어져 있는걸 봤는데요 실제 DB에다가 테스트를 하려고 이것저것 해봤는데 잘 안되더라구요;; error: Nest can't resolve dependencies of the ~~ 하면서 에러가 나오고 아마 서비스 쪽에 주입된 레파지토리 때문일 것 같은데 목업이 아닌 실제 db에 테스트코드를 돌리기 위해서는 어떤 작업이 필요한 지 질문드립니다.
//template <tr v-for="(product,index) in productList" :key="product.id"> // setup let productList = reactive([]) const getProductList = function() { productService.getProductList(null, null, null, null) .then((response) => { console.log('response.data.data :', response.data.data); // array console.log(productList) productList = response.data.data console.log(productList) }) } 이 코드에서 productList = response.data .data 를 할당하니까 반응성이 사라지더라구요 ( 변수에 새로운 값을 할당해버린 게 그 원인이었구요) 그래서 1) productList = ref([]) 로 하고 productList.value = response.data.data 하니까 정상 작동 2) productList = reactive({ a : []}) 로 하고 productList.a = response.data.data template에서 <tr v-for="(product,index) in productList.a" :key="product.id"> 로 사용하니까 정상 작동 3) 이것만 보면 ref로 선언하면 데이터를 받아올 때 .value 하나만 추가해주면 끝이지만 reactive를 사용하면 .a를 이곳저곳에 다 붙여줘야 되는데 객체, 배열은 reactive 안에 넣어서 사용하는 이유는 뭔가요? 4) 그냥 reactive는 버리고 ref로만 모든 반응형을 선언해도 기능상에 문제는 없나요?
에러해결 시도현황 (하단에 npm list 첨부했습니다.) 생각한 원인 node_moduels\@loadable\component 의 경로로 탐색을 하는 상황인데 npm i @types/loadable__component 결과로 다운받은 모듈의 위치는 @types 디렉토리아래 존재하는 상황이므로 노드가 경로를 못찾나? 라고 생각했습니다. => 첫 시도 에러 상황: module not fount 상황으로 @types directory 를 찾지 못해 생긴 문제로 생각했습니다. 에러 메시지 vscode 상황 브라우저 상황 => @types 를 추가해 경로를 고쳐봤습니다. 마우스를 올리면 이런식으로 나오는데, 브라우저에서는 module not found 가 나옵니다. 브라우저 상황 => 두 번째 시도 에러 추론.. webpack 문제? 잘은 모르지만, webpack config에 @loadable 을 추가해봐도 해결이 안됩니다. => @loadable 이 없는 상황에도 에러가 납니다. => @loadbale resolve argument 로, (__dirname, '@types') 에러납니다. (import loadable from '@loadable/component' 상황입니다.) => @loadable resolve argument 로, (__dirname, '@types/loadable__component') 에러납니다. (import loadable from '@loadable/component' 상황입니다.) 두 번째 시도의 에러 첨부본 모두 vscode 를 재부팅후 npm run dev를 실행한 결과입니다. ref) => npm list
1. 어떤예외가 발생할것이라고 생각해서 예외처리를 해주는것인가요? - 세션에 오류가있는 경우 예외가 발생할 수 있음 - 리다이렉션에서 오류가 발생할 수 있음 -> 그래서 try-catch사용함인건가요? 2. 예외되던지기를 사용하는이유 해당 메서드에서 예외를 처리해버리면 정상요청으로 처리해버림. 그래서 was까지 올려주기 위해 예외를 던짐 < 이라고 하셨어요. 왜 정상요청으로 처리하는건지.. was까지 올려주면 뭐가 달라지는건지..모르겠습니다 was까지 올려줘야 해당 에러에 대한 대응 페이지를 잘 만들어주는데 제가 처리해버리면 성공에 대한 페이지를 만들어주기때문인가요?
아래의 코드에서 다음과 같은 에러가 나타납니다 {member.id === userData?.id && <span> (나)</span>} "'false | IUser' 형식에 'id' 속성이 없습니다. 'false' 형식에 'id' 속성이 없습니다.", userData?.id는 userData가 존재할때만 id property에 접근하고, userData가 false면 접근하지 않는 것으로 알고 있는데, 왜 저러한 오류가 나타나는지 의문입니다. 이전에도 error.response?.data 같은 문법을 많이 썼는데, 왜 저게 오류인지 의문입니다.