DBeaver启动报错‘Operation failed. Retry count remains=1’求助
DBeaver启动错误求助及Spring Boot Board模块代码展示
DBeaver启动错误详情
报错信息:
eclipse.buildId=unknown java.version=17.0.6 java.vendor=Eclipse Adoptium BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=ko Framework arguments: -eclipse.keyring C:\Users\USER\AppData\Roaming\DBeaverData\secure\secure_storage Command-line arguments: -os win32 -ws win32 -arch x86_64 org.jkiss.dbeaver.model Error Mon Sep 25 14:09:32 KST 2023 Operation failed. Retry count remains = 1
已完成的排查步骤:
- 确认Java 17.0.6与当前DBeaver版本兼容,排除版本适配问题
- 检查DBeaver日志文件,未发现更多相关报错信息
- 未安装任何插件或扩展,排除插件冲突可能
Spring Boot项目Board模块代码
Board实体类
package org.polyproject.fishinghubpro.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Builder; import lombok.Data; import lombok.ToString; import org.hibernate.annotations.CreationTimestamp; import java.util.ArrayList; import java.util.Date; import java.util.List; @Entity @Data public class Board{ @Id @GeneratedValue(strategy= GenerationType.IDENTITY) private Integer id; private String title; @Column(columnDefinition = "TEXT", nullable = false) // content를 TEXT 타입으로 설정하고 NOT NULL 제약 조건 추가 private String content; @Column(length = 15000 ) private String filename; @Column(length = 30000 ) private String filepath; @CreationTimestamp @Temporal(TemporalType.TIMESTAMP) @Column(name = "created_at", nullable = false, updatable = false) private Date createdAt; @ManyToOne @ToString.Exclude @JoinColumn(name="user_no") private Member member; }
BoardDto
package org.polyproject.fishinghubpro.dto; import lombok.Builder; import lombok.Data; import lombok.Getter; import lombok.Setter; import org.polyproject.fishinghubpro.entity.BaseEntity; import java.util.Date; @Data @Builder public class BoardDto { @Setter@Getter private int id; private String title; private String content; private String filename; private String filepath; private Date createdAt; private String memberNick; // 회원 닉네임 // 생성자, getter, setter 생략 }
BoardRepository
package org.polyproject.fishinghubpro.repository; import jakarta.transaction.Transactional; import org.polyproject.fishinghubpro.entity.Board; import org.polyproject.fishinghubpro.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.Optional; @Repository @Transactional public interface BoardRepository extends JpaRepository <Board, Integer> { }
BoardService
package org.polyproject.fishinghubpro.service; import jakarta.transaction.Transactional; import org.polyproject.fishinghubpro.dto.BoardDto; import org.polyproject.fishinghubpro.entity.Board; import org.polyproject.fishinghubpro.entity.Member; import org.polyproject.fishinghubpro.repository.BoardRepository; import org.polyproject.fishinghubpro.repository.member.MemberRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.util.Date; import java.io.File; import java.util.List; import java.util.UUID; @Service @Transactional public class BoardService { @Autowired private BoardRepository boardRepository; @Autowired private MemberRepository memberRepository; //게시글 리스트 처리 public Page<Board>boardList(Pageable pageable){ return boardRepository.findAll(pageable); } //특정 게시글 불러오기 public Board boardView(Integer id) { Board board = boardRepository.findById(id).orElse(null); return board; } //특정게시글 삭제 public void boardDelete(Integer id){ boardRepository.deleteById(id); } // 게시글 작성 메서드 public BoardDto write(Board board, MultipartFile file, String userId) throws Exception { Member member = memberRepository.findByUserId(userId).orElse(null); if (board.getContent() != null && !board.getContent().isEmpty()) { // // 생성 날짜 설정 // board.setCreatedAt(new Date()); // 파일 저장 경로 설정 String projectPath = System.getProperty("user.dir") + "/src/main/resources/static/files"; // UUID를 사용하여 파일명 중복 방지 UUID uuid = UUID.randomUUID(); // 파일이 업로드되었을 때만 파일 처리 if (file != null && !file.isEmpty()) { String fileName = uuid + "_" + file.getOriginalFilename(); File saveFile = new File(projectPath, fileName); file.transferTo(saveFile); board.setFilename(fileName); board.setFilepath("/files/" + fileName); // 파일 경로 동적 설정 } board.setMember(member); Board savedBoard = boardRepository.saveAndFlush(board); // 데이터베이스에 저장save(board) // 게시글과 회원 닉네임을 포함한 DTO 객체 생성 BoardDto boardDto = BoardDto.builder() .title(savedBoard.getTitle()) .content(savedBoard.getContent()) .filepath(savedBoard.getFilepath()) .filename(savedBoard.getFilename()) .build(); boardDto.setMemberNick(member.getUserNick()); return boardDto; } else { // 콘텐츠가 null 또는 비어 있을 경우 예외 처리 throw new Exception("게시물 내용을 입력해주세요."); } } }
BoardController
package org.polyproject.fishinghubpro.controller; import jakarta.transaction.Transactional; import lombok.extern.slf4j.Slf4j; import org.polyproject.fishinghubpro.dto.BoardDto; import org.polyproject.fishinghubpro.entity.Board; import org.polyproject.fishinghubpro.security.JwtTokenProvider; import org.polyproject.fishinghubpro.service.BoardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.web.PageableDefault; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.security.Principal; import java.util.List; @RestController @CrossOrigin("*") @Transactional @Slf4j public class BoardController { @Autowired private BoardService boardService; @Autowired private JwtTokenProvider jwtTokenProvider; @GetMapping("/board/log") public ResponseEntity<?> checkLogin(@RequestHeader("Authorization") String token) { // "Bearer " 접두어 제거 (토큰이 "Bearer [토큰값]" 형식으로 오는 경우) token = token.startsWith("Bearer ") ? token.substring(7) : token; // 토큰 유효성 검사 if (jwtTokenProvider.validateToken(token)) { return ResponseEntity.ok("User is logged in"); } else { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Unauthorized"); } } @GetMapping("/board/write")//localhost:8090/board/write public String boardWriteForm(){ return "boardwrite"; } //원본 @PostMapping("board/writepro")//@RequestBodyboard앞에 public ResponseEntity<BoardDto> boardWritePro(Board board,@RequestParam("file") MultipartFile file, Principal principal) throws Exception { String userId = principal.getName(); // boardService.write 메서드로 게시글을 작성하고 게시글 정보를 받아옴 BoardDto createdBoard = boardService.write(board, file, userId); System.out.println("board : "+board+", id : "+userId); System.out.println("board : "+board+", file : "+file+", id : "+userId); // ResponseEntity로 커스텀 응답을 생성하고, 상태 코드와 함께 반환 return new ResponseEntity<>(createdBoard, HttpStatus.CREATED); // 수정: response 대신 createdBoard 반환 } @GetMapping("/board/list") public ResponseEntity<List<Board>> boardList(@PageableDefault(page = 0, size = 10, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) { Page<Board> list = boardService.boardList(pageable); // 게시글 목록을 리스트로 변환 List<Board> boardList = list.getContent(); // ResponseEntity를 사용하여 JSON 형식으로 데이터 반환 return new ResponseEntity<>(boardList, HttpStatus.OK); } @GetMapping("/board/view")//localhost:8080/board/view?id=1 public String boardView(Model model, Integer id){ model.addAttribute("board",boardService.boardView(id)); return "boardview"; } @DeleteMapping("/board/{id}") public ResponseEntity<String> deleteBoard(@PathVariable("id") Integer id) { try { // 게시글 삭제를 시도합니다. boardService.boardDelete(id); // 게시글이 성공적으로 삭제되었을 때의 응답입니다. return ResponseEntity.noContent().build(); } catch (Exception e) { // 게시글 삭제 중 오류가 발생했을 때의 응답입니다. return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("게시글 삭제 중 오류가 발생했습니다."); } } // @GetMapping("/board/delete") // public String boardDelete(Integer id){ // // boardService.boardDelete(id); // // return "redirect:/board/list"; // } @GetMapping("/board/modify/{id}") public String boardModify(@PathVariable("id")Integer id,Model model){ model.addAttribute("board",boardService.boardView(id)); return "boardmodify"; } @PostMapping("/board/update/") public String boardUpdate(@RequestBody BoardDto board, Principal principal)throws Exception { log.info("지나갑니다!~!==={}",board.getId()); String userId = principal.getName(); //게시글을 쓴 애의 아이디. Board boardTemp = boardService.boardView(board.getId()); //기존에 저장된 게시글 가져오기 //기존에 저장된 게시글에 새로 들어온 데이터로 수정 해주는 구문. boardTemp.setTitle(board.getTitle()); //dirtyChecking으로 변경감지로 수정. 따로 저장 구문 필요 없음. boardTemp.setContent(board.getContent()); // boardService.write(boardTemp, file, userId); // 수정된 내용을 저장 return "수정되었습니다."; } }
求助
希望遇到过类似DBeaver启动错误的开发者提供解决建议,感谢支持!
内容的提问来源于stack exchange,提问作者박진후
相关产品推荐
相关产品推荐

