샘플 레일스 애플리케이션에서 sqlite db를 사용하고 있습니다. 내 사용자 테이블에서 나는 모든 레코드를 User.delete_all
을 사용하여 지 웠습니다. 하지만 지금은 언제든지 테이블에 User.create
을 사용하여 새 레코드를 삽입 할 때 ID는 테이블에있는 마지막 레코드의 ID보다 하나 더 큰 값에서 시작합니다. 예를 들어 내 테이블에 5 개의 레코드가 있고 모두 지워진 경우 User.create를 실행하면 ID가 6으로 시작됩니다. ID를 1에서 다시 시작할 수있는 방법이 있습니까? 레일에서 sqlite db의 테이블에있는 id 필드를 재설정하십시오.
0
A
답변
1
감사합니다. Sqlite는 sqlite_sequence
이라는 내부 테이블에서이 값을 처리합니다. 당신은 쿼리하여 특정 자동 증가 활성화 된 테이블에 대한 ID를 재설정 할 수 있습니다 :
UPDATE "sqlite_sequence" SET "seq" = 0 WHERE "name" = $YOURTABLENAME
, 이것은 자동 증가 기능은 사용자가 알고리즘에 영향을주지 않는 방식으로 사용하기위한 것입니다 때문에 좋은 생각이 아니다 . 이상적으로는 id의 실제 값을 신경 쓰지 말고 레코드의 고유 식별자로 간주해야합니다.
+0
답장을 보내 주셔서 감사합니다 :). 다른 방법은 레일즈 콘솔의 활성 레코드 api를 사용하는 것입니다. – Jim
2
비슷한 질문 : How to reset a single table in rails?. 우리는 sqlite 테이블에 대한 id 열을 1로 재설정하기 위해 레일 콘솔에서 다음을 실행할 수 있습니다.
ActiveRecord::Base.connection.execute("DELETE from sqlite_sequence where name = '<table_name>'")
관련 문제
- 1. sql의 ID 필드를 하나의 오류로 재설정하십시오.
- 2. SQLite DB의 특수 문자
- 3. sqlite DB의 TIMESTAMP 유형
- 4. 레일에서 DB의 값으로 상수 초기화
- 5. id 필드를 보존하면서 다른 db의 삭제 된 행을 다시 넣습니다.
- 6. sqlite db의 빈 테이블 크기
- 7. Mongo DB의 ID 시퀀스 번호
- 8. SQLite DB의 식별 열 최대 값
- 9. 레일에서 모델의 모든 필드를 열거하십시오.
- 10. sqlite : 읽기 전용 DB의 임시 테이블/뷰?
- 11. -SQLite DB의 shm 및 -wal 파일
- 12. AChartEngine을 SQLite DB의 데이터와 통합하는 방법은 무엇입니까?
- 13. iPhone 프로젝트에서 sqlite db의 경로를 어떻게 지정해야합니까?
- 14. SQLite db의 모든 레코드를 처리하는 방법은 무엇입니까?
- 15. qt를 사용하여 sqlite DB의 비동기 SELECT?
- 16. galleryview에 sqlite DB의 이미지를 동적으로 채우는 중
- 17. 안드로이드에서 SQLIte DB의 특정 행을 선택하십시오.
- 18. 레일에서 세션 ID 찾기 3
- 19. 저지가 id 필드를 잃습니다.
- 20. 테이블에있는
- 21. 레일에서 반환 할 필드를 동적으로 선택하는 방법
- 22. 테이블에있는 그림
- 23. SQLite 데이터베이스의 항목 ID 업데이트
- 24. 레일에서 루비의 필드를 가장 잘 살리는 방법
- 25. ViewState에 데이터베이스 ID 필드를 저장해야합니까?
- 26. MVC : ActionLink는 ID 필드를 기억합니까?
- 27. 데이터베이스의 온도에서 id 필드를 사용하십시오.
- 28. 레일에서 랜덤 기본 id 생성하기 3
- 29. 레일에서 컨트롤러로 ID 패스를 숨기는 방법은 무엇입니까?
- 30. SQLite 업데이트가 필드를 null 값으로 바꾸고 있습니다.
나는 rake db : reset 또는 이와 유사한 방법으로 인덱스를 삭제할 수 있다고 생각합니다. 또는 다음을 사용할 수 있습니다. http://www.sqlite.org/lang_reindex.html. 그러나, 왜 이것을해야합니까 ?? – simonmorley
rails 콘솔에서 다음을 실행하여 수정 : ActiveRecord :: Base.connection.execute ("sqlite_sequence에서 DELETE where name = 'users'") – Jim