$ yarn run seed yarn run v1.22.17 $ ts-node ./node_modules/typeorm-extension/dist/cli/index.js seed -d ./dataSource.ts query: SELECT VERSION() AS `version` typeorm-extension seed Populate the database with an initial data set or generated data by a factory. Options: -h, --help Show help [boolean] -r, --root Path to the data-source / config file. [default: "/Users/teetee6/code_react/sleact/hback"] -c, --connection Name of the connection on which run a query. [deprecated] [default: "default"] -f, --config Name of the file with the data-source configuration. [deprecated] [default: "ormconfig"] -d, --dataSource Name of the file with the data-source. [default: "data-source"] -s, --seed Specify the seed class to run. -v, --version Show version number [boolean] TypeError: connection.createQueryBuilder is not a function at CreateInitialData.run (/Users/teetee6/code_react/sleact/hback/src/database/seeds/create-initial-data.ts:40:8) at /Users/teetee6/code_react/sleact/hback/node_modules/typeorm-extension/src/seeder/module.ts:125:18 at Generator.next (<anonymous>) at fulfilled (/Users/teetee6/code_react/sleact/hback/node_modules/typeorm-extension/dist/seeder/module.js:5:58) error Command failed with exit code 1. 4달전 즈음의 공지사항에 typeorm 0.3버전이 Seeding이 아직 호환 안된다고 되있던데 아직 안나온 거겟죠,, /database/seeds/create-initial-data.ts Connection이 deprecated되었다던데 제가 못찾은 새로운 seed방법이 나온걸까요 검색해봐도 안나오는데 아니면 없는걸까요 export default class CreateInitialData implements Seeder { public async run(factory: Factory, connection: Connection): Promise<any> { await connection .createQueryBuilder() .insert() .into(Workspaces) .values([{ id: 1, name: 'Sleact', url: 'sleact' }]) .execute(); await connection .createQueryBuilder() .insert() .into(Channels) .values([{ id: 1, name: '일반', WorkspaceId: 1, private: false }]) .execute(); } }
안녕하세요. CI/CD 과정을 들으면서 막히는 부분이 있어서 문의드립니다. 환경 OS: Mac OS (Intel) 톰캣설치환경: local (9.0.70 버전) Jenkins 설치환경: Docker Container 저의 실습환경은 위와 같습니다. Jenkins에서 war 파일까지 빌드되고 실제 파일이 잘 떨어지는데 톰캣으로 배포하는 과정에서 네트워크 이슈인지 계속 connection timeout이 나와서 제 local ip 문제인지 실제로 브라우저에서 192.x.x.x:8088로 접속해보면 정상적으로 톰캣 화면이 나오긴 합니다. 선생님이 말씀해주신대로 톰캣 url에서 제 이더넷 0번 아이피인 192.x.x.x로 기입해줬는데도 ㅠㅠ 계속 발생하네요 질문게시판에 혹시 저같은 케이스가 있는지 찾아보긴했는데 안보여서요
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 이번 질문 내용을 정리해보니 좀 길어서 미리 좀 죄송합니다.. ...질문은 1개입니다. 스냅샷과 @Transactional(readOnly=true)의 관계 질문입니다. 질문 내용은 다음과 같습니다. 스프링 트랜잭션 이해/트랜잭션 옵션 소개 11:04 쯤 보면 JPA는 읽기 전용 트랜잭션(@Transactional(readOnly=true))일 경우 커밋 시점에 플러시를 호출하지 않는다. ... 추가로 변경이 필요 없으니 변경 감지를 위한 스냅샷 객체도 생성하지 않는다. 라고 들었는데 이때 갑자기 스냅샷의 관계에 대해 헷갈려 질문해봅니다. 말 그대로 MemberService.class 에 있는 @Transactinal(readOnly=true) findMemberById() 로 find 해왔는데 스냅샷이 생성이 안되면 Member findMember = memberService.findMemberById(memberId); findMember.setUsername("변경된 username"); 의 코드가 동작했을 때 변경이 안된다는 건데 그러면 되게 난감한 상황인 것 같아 말이 안돼서 다시 생각해보았습니다. 그래서 제가 생각해보고 시도해봤는데, @Transactional(readOnly=true) findMember() 메서드 내에서는 스냅샷이 생성이 안되고 Member findMember = memberService.findMember(memberId); 에서 findMember는 스냅샷 생성이 되어 있는 것이겠다가 결론입니다. 결론을 내보긴 했지만 jpa를 배웠을 때 find의 경우 DB에서 조회해 오는 순간 스냅샷이 생성되어 있는 것으로 이해했어서 왜 memberService.findMember() 에서의 트랜잭션이 commit 되고 나서 스냅샷이 생성되는지는 모르겠네요. 트랜잭션 readOnly=true일 경우 로직을 그렇게 작동하게 해놓은 건가.. 어쨌든.. 제 결론이 맞을까요 ? 아래는 실험해본 코드와 생각해서 정리해본 1차캐시 이미지 입니다. find만 했을 경우 혹시 안에 변경감지가 되는지 보려고 member.setUsername("1111"); 을 해봤습니다. 지금 생각해보니 (readOnly=true)라서 flush가 일어나지 않아 update 쿼리가 당연히 안 나가겠지만 확인차 해봤다고 봐주시면 될 것 같습니다. // flush() 때문에 update 쿼리가 안 나가는 거면 내부에 스냅샷이 있을 수도 있겠네요. 어쨋든 이 결과 생각한 1차 캐시 및 스냅샷 이미지입니다. 트랜잭션 시작, 종료 사이에 스냅샷이 비워져 있는지 확실하진 않아서 저게 맞는 지가 핵심 질문입니다. 만약 비워져 있는 게 맞다면, 부가적으로 따라오는 의문은 다음과 같습니다. changeMemberUsername() 메서드를 호출했을 때 1차 캐시 및 스냅샷은 어떻게 동작하는가 입니다. 일반적으로 find를 해온 후 데이터를 변경하는 JPA이기 때문에 @Transactional(readOnly=true) findMemberById() 로 들고온 결과는 반드시 스냅샷이 있어야 된다는 게 제 생각이기 때문에 다음과 같이 동작할 거라고 결론을 지어봤습니다. 이렇게 스냅샷이 동작하는 게 맞을까요 ? 여기까지 읽어주셔서 정말 정말 감사합니다.
안녕하세요. 카프카 관련 수업 듣는 중 오류가 발생하여 질문 드립니다. org.apache.kafka.connect.errors.ConnectException: Tolerance exceeded in error handler\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:206)\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execute(RetryWithToleranceOperator.java:132)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.convertAndTransformRecord(WorkerSinkTask.java:501)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:478)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:328)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:232)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:201)\n\tat org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:185)\n\tat org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:833)\nCaused by: org.apache.kafka.connect.errors.DataException: Converting byte[] to Kafka Connect data failed due to serialization error: \n\tat org.apache.kafka.connect.json.JsonConverter.toConnectData(JsonConverter.java:366)\n\tat org.apache.kafka.connect.storage.Converter.toConnectData(Converter.java:87)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.convertValue(WorkerSinkTask.java:545)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.lambda$convertAndTransformRecord$1(WorkerSinkTask.java:501)\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndRetry(RetryWithToleranceOperator.java:156)\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:190)\n\t... 13 more\nCaused by: org.apache.kafka.common.errors.SerializationException: com.fasterxml.jackson.core.JsonParseException: Unexpected character (':' (code 58)): was expecting comma to separate Object entries\n at [Source: (byte[])\"{\"schema\":{\"type\":\"struct\",\"fields\":[{\"type\":\"int32\",\"optional\":false,\"field\":\"id\"},{\"type\":\"string\",\"optional\":true,\"field\":\"user_id\"},{\"type\":\"string\",\"optional\":true,\"field\":\"pwd\"},{\"type\":\"string\",\"optional\":true,\"field\":\"name\"},{\"type\":\"int64\",\"optional\":true,\"name\":\"org.apache.kafka.connect.data.Timestamp\",\"version\":1,\"field\":\"created_at\"}],\"optional\":false,\"name\":\"users\"},\"payload\":{\"id”:4,”user_id\":\"user4”,”pwd\":\"1234\",\"name\":\"username4”,”created_at\":1671277849000}}\"; line: 1, column: 433]\nCaused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (':' (code 58)): was expecting comma to separate Object entries\n at [Source: (byte[])\"{\"schema\":{\"type\":\"struct\",\"fields\":[{\"type\":\"int32\",\"optional\":false,\"field\":\"id\"},{\"type\":\"string\",\"optional\":true,\"field\":\"user_id\"},{\"type\":\"string\",\"optional\":true,\"field\":\"pwd\"},{\"type\":\"string\",\"optional\":true,\"field\":\"name\"},{\"type\":\"int64\",\"optional\":true,\"name\":\"org.apache.kafka.connect.data.Timestamp\",\"version\":1,\"field\":\"created_at\"}],\"optional\":false,\"name\":\"users\"},\"payload\":{\"id”:4,”user_id\":\"user4”,”pwd\":\"1234\",\"name\":\"username4”,”created_at\":1671277849000}}\"; line: 1, column: 433]\n\tat com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1840)\n\tat com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:712)\n\tat com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:637)\n\tat com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextFieldName(UTF8StreamJsonParser.java:1011)\n\tat com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:250)\n\tat com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:258)\n\tat com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:68)\n\tat com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:15)\n\tat com.fasterxml.jackson.databind.ObjectMapper._readTreeAndClose(ObjectMapper.java:4270)\n\tat com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:2734)\n\tat org.apache.kafka.connect.json.JsonDeserializer.deserialize(JsonDeserializer.java:64)\n\tat org.apache.kafka.connect.json.JsonConverter.toConnectData(JsonConverter.java:364)\n\tat org.apache.kafka.connect.storage.Converter.toConnectData(Converter.java:87)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.convertValue(WorkerSinkTask.java:545)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.lambda$convertAndTransformRecord$1(WorkerSinkTask.java:501)\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndRetry(RetryWithToleranceOperator.java:156)\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:190)\n\tat org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execute(RetryWithToleranceOperator.java:132)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.convertAndTransformRecord(WorkerSinkTask.java:501)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:478)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:328)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:232)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:201)\n\tat org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:185)\n\tat org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:833)\n 발생 에러는 다음과 같은데, 터미널에서 직접 produce 하는 도중 발생하였는데 payload 의 데이터가 잘못 전송 되어서 해당 오류가 발생 한 것 같아서 기존 users 테이블에 다시 insert 하는 방식으로 다시 사용했을 때 이전에 실패한 task 가 남아있어서 여전히 my_topic_users 테이블에 insert 되지 않았습니다. 중간에 발생한 task 는 삭제하거나 임의로 건너 뛰거나 할 수 없는 것인가요?
package hello.core.scope; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; public class SingletonWithPrototypeTest1 { @Test void prototypeFind() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); PrototypeBean prototypeBean1 = ac.getBean(PrototypeBean.class); prototypeBean1.addCount(); assertThat(prototypeBean1.getCount()).isEqualTo(1); PrototypeBean prototypeBean2 = ac.getBean(PrototypeBean.class); prototypeBean2.addCount(); assertThat(prototypeBean2.getCount()).isEqualTo(1); } @Test public void singletonClientUsePrototype() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); ClientBean clientBean1 = ac.getBean(ClientBean.class); int count1 = clientBean1.logic(); assertThat(count1).isEqualTo(1); ClientBean clientBean2 = ac.getBean(ClientBean.class); int count2 = clientBean2.logic(); assertThat(count2).isEqualTo(2); } @Scope("singleton") static class ClientBean { private final PrototypeBean prototypeBean; @Autowired public ClientBean(PrototypeBean prototypeBean) { this.prototypeBean = prototypeBean; } public int logic() { prototypeBean.addCount(); return prototypeBean.getCount(); } } @Scope("prototype") static class PrototypeBean { private int count = 0; public void addCount() { count++; } public int getCount() { return count; } @PostConstruct public void init() { System.out.println("PrototypeBean.init " + this); } @PreDestroy public void destroy() { System.out.println("PrototypeBean.destroy"); } } } 위 코드에서 @Autowired 부분에서 Error:(43, 10) Autowired members must be defined in valid Spring bean (@Component|@Service|...) 에러가 발생합니다. 스프링 빈으로 등록되어 있지 않아서 발생하는 오류라고 생각됩니다. 하지만 강사님 코드에서는 발생하지 않아서 제가 뭘 빠뜨린 것 같은데 그게 무엇인지 모르겠습니다. 테스트는 돌려보면 잘 작동하고 통과가 됩니다.
강의보고 따라하는데 설정은 알아서 하시라하셔서... 구글링 해도 버전도 다르고 환경도 모든게 여기 따라하는거랑 달라서 어떻게 해야 될지 모르겠네요... 코드 예뻐지게 하는 기능이라 하셨는데 굳이 안 예뻐져도 진도 나가는데 문제는 없죠?? 우선 강의 내용 따라하고 vscode 마켓에서 eslint 설치만 한 상태임다
강의 41분 53초 yarn dev로 로컬호스트 들어가니까 이런 오류가 뜨네요. 해석해보니 @next/font는 next.js 13버전에만 쓸 수 있다 하는데 next.js 13버전은 리액트 18에서만 쓸수 있다고 뜹니다. 그리고 next.js 설치 진행할때 타입스크립트와 eslint 설치하냐고 나오던데 타입스크립트 yes 하면 index.js가 타입스크립트로 나와서 다시 깔았습니다... next.js 설치하면 index.js에 이런 코드가 떠요. 어떻게 해야되나요? 궁금합니다.
현재 아무것도 켜있지 않은 크롬 웹 브라우저를 클라이언트, 로컬호스트 8080을 치고 들어간 웹 페이지를 서버라고 생각하면 될까요?? 아니면 인텔리제이가 클라이언트인가요? 클라이언트와 서버 사이의 관계를 정확히 설명좀 해주실 수 없을까요 ㅠㅠ,,, 혼자 너무 헤매고 있네요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 상품별 매출 랭킹(카테고리별)이 내림차순으로 나와야 하는데 왜 매출 수치랑 랭킹이 맞지 않을까요.. 대체 어디가 틀린 걸까요ㅠㅠ with c as (select b.category_id, a.product_id, sum(a.amount) sum_amt from order_items a join products b on a.product_id = b.product_id group by a.product_id, b.category_id order by b.category_id, a.product_id ) select category_id, product_id, sum_amt, sum(sum_amt) over (partition by category_id) sum_category, row_number() over(partition by category_id order by sum_amt desc) as rank_sum from c group by category_id, product_id, sum_amt
유려했던 오류가.. 나타났습니다. 홈페이지 오류내용 Failed to compile ./pages/_app.js Error: x Expression expected ,---- 5 | | import { createStore } from 'redux'; : ^ `---- x Unexpected token `{`. Expected `.` or `(` ,---- 5 | | import { createStore } from 'redux'; : ^ `---- Caused by: 0: failed to process input file 1: Syntax Error app.js 페이지 내용 app.js 가 코드로올리면 오류가나서 못올리네요 그림첨부합니다. 터미널 내용과, app.js 코드올리려고하면 고양이그림나오고 오류나와서 안되서 못올리네요 Failed to compile ./pages/_app.js:4:0 Module not found: Can't resolve 'redux' 2 | import PropTypes from 'prop-types'; 3 | import Head from 'next/head'; > 4 | import { createStore } from 'redux'; 5 | 6 | import 'antd/dist/antd.css' 7 | https://nextjs.org/docs/messages/module-not-found This error occurred during the build process and can only be dismissed by fixing the error. ㅇ
현재 회사의 DB는 mysql로 되어있는데, 제가 강의에서 배우는 Postgresql 과는 문법 차이가 있는거 같더라구요. mysql로 되어있는 문법들을 postgresql로 바꾸는것을 마이그레이션 이라고 하던데 실습 강의를 배우면서 회사 DB로 복습을 하려 합니다. mysql로 되어있는 것을 postgresql로 바꾸려면 어떻게 해야할까요?
@Query 내부적으로 문자로 JPQL을 적어야 하는 순간에는 무조건 QueryDsl로 type-safe하게 쿼리를 작성하고 있었습니다 이부분을 좀 생각해보니까 SELECT DISTINCT t FROM Team t JOIN FETCH t.members WHERE t.id = :teamId SELECT m FROM Member m JOIN FETCH m.team 예시와 같은 간단한 쿼리들도 전부 QueryDsl로 옮기다보니까 굳이 @Query로 작성하지 않고 옮겨서 작성해야하나 라는 생각이 들었습니다 영한님의 경우 문자로 JPQL을 작성해야하는 순간은 전부 QueryDsl로 작성하시는지 궁금해서 질문을 남기게 되었습니다