Tôi đang viết di chuyển để chuyển đổi ứng dụng không có đường ray thành định dạng phù hợp cho đường ray - một trong các bảng vì một số lý do không có tăng tự động được đặt trên cột id. Có cách nào nhanh chóng để bật tính năng này khi đang di chuyển, có thể với change_column
hoặc một cái gì đó?Tạo thuộc tính gia tăng tự động bị thiếu với di chuyển đường ray
9
A
Trả lời
7
Bạn cần thực thi câu lệnh SQL.
statement = "ALTER TABLE `users` CHANGE `id` `id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT"
ActiveRecord::Base.connection.execute(statement)
Lưu ý đây chỉ là một ví dụ. Cú pháp câu lệnh SQL cuối cùng phụ thuộc vào cơ sở dữ liệu.
6
Nếu bạn đang sử dụng postgesql, một yêu cầu sẽ không thực hiện được. Bạn sẽ cần tạo một chuỗi mới trong cơ sở dữ liệu.
create sequence users_id_seq;
Sau đó, thêm cột id để bàn của bạn
alter table users
add id INT UNIQUE;
Sau đó, thiết lập giá trị mặc định cho các id
alter table users
alter column id
set default nextval('users_id_seq');
Sau đó cư cột id. Điều này có thể khá dài nếu bảng có nhiều hàng
update users
set id = nextval('users_id_seq');
Hy vọng điều này giúp người dùng postgresql ...
+0
Cảm ơn! Điều này rất hữu ích! –
5
Các Postgres answer by @jlfenaux bỏ lỡ ra vào loại serial
, mà làm tất cả điều đó cho bạn tự động:
ALTER TABLE tbl add tbl_id serial;
Các vấn đề liên quan
- 1. Tạo trường tăng tự động trong đường ray
- 2. Đường ray - Tạo tập lệnh di chuyển từ mô hình
- 3. Mongoose tự động gia tăng
- 4. đường ray tạo bảng trong db động
- 5. Di chuyển đường ray - change_column với loại chuyển đổi
- 6. Di chuyển mô hình đường ray sau khi di chuyển
- 7. C# thay thế di chuyển đường ray
- 8. Thuộc tính ảo trong đường ray 4
- 9. Đường ray: Tạo di chuyển xếp bảng thả xuống
- 10. Lấy SQL từ Di chuyển Đường ray
- 11. Đường ray: Đặt thuộc tính trong after_create
- 12. đường ray chạy di chuyển cụ thể
- 13. Cài đặt thuộc tính Tự động hóa cho NSView bị thiếu
- 14. Thực hiện di chuyển dữ liệu lớn trong đường ray
- 15. Đường ray: đặt thuộc tính bí danh cột với find_by_sql
- 16. Tự động tạo thuộc tính lớp
- 17. GreenDAO tạo thuộc tính ID tự động
- 18. động thêm các trường trong đường ray với các thuộc tính lồng nhau ra
- 19. Di chuyển Lag với thuộc tính hộp bóng CSS3?
- 20. EF: Tự động di chuyển đang chạy khi bị tắt
- 21. Tăng tuyến tính gia tăng của git DAG
- 22. Các liên kết tự động trong các thiết bị ruby trên đường ray
- 23. Cách xác định trường boolean cho di chuyển đường ray
- 24. Xóa di chuyển trong quá khứ trong đường ray
- 25. Di chuyển đường ray cho cột thay đổi
- 26. C# Regex - Khớp và thay thế, Tự động gia tăng
- 27. MySQL: Quên để đặt Tự động gia tăng
- 28. phạm vi đường ray và tham gia
- 29. Update-Database cố gắng thực hiện di chuyển tự động ngay cả khi tự động di chuyển bị vô hiệu hóa
- 30. Xóa thuộc tính khi đang di chuyển với Diazo
cảm ơn rất nhiều @Simone Carletti, lãng phí cả ngày để giải quyết vấn đề, nhưng bây giờ nó giải quyết và nhờ DGM quá, cho postin g câu hỏi cụ thể cho trường hợp của tôi. Cả hai bạn có thể cho tôi ý tưởng về việc viết các thủ tục lưu sẵn trong đường ray 4.1 theo cách lạ mắt, hy vọng các bạn sẽ giúp tôi một lần nữa. Chúc mừng mã hóa. – roarfromror
Tôi không biết nhiều hoạt động trong đường ray bằng cách sử dụng các thủ tục lưu sẵn - một số góc của đường ray có ít sử dụng cho các mặt mạnh hơn của SQL, những người khác chỉ không biết về nó ... dù sao, ít nhất bạn có thể sử dụng cùng một hình thức để viết SQL để tạo ra các thủ tục được lưu trữ. – DGM