Làm thế nào để xóa thủ công hoặc lập trình một trường?


8

Tôi đã thử tạo một trường, nhưng máy chủ của tôi đã bị hỏng giữa chừng với Lỗi Máy chủ Nội bộ do một số cuộc tấn công spambot ...

Bây giờ, khi tôi cố gắng thêm trường một lần nữa, tôi nhận được:

Tên máy có thể đọc được đã được sử dụng. Nó phải là duy nhất.

Tôi đoán một số bảng đã được điền vào db. Làm thế nào tôi có thể loại bỏ những thứ này một cách dễ dàng?


Hãy xem câu trả lời của tôi trong drupal.stackexchange.com/questions/46085/ Kiếm
barista nghiệp dư

Câu trả lời:


27

Bạn cũng có thể sử dụng drush để chạy field_delete_field(). Chỉ cần chạy:

drush eval 'field_delete_field("yourfield")'

1
Cuộc gọi tốt, sạch sẽ hơn nhiều so với săn bắn qua db. Chạy cron sau đó quá hoặc field_purge_batch ().
littledopero

2
Thật tuyệt vời! FYI mà chức năng không xóa hoàn toàn dữ liệu. Nó thêm một bảng db cho mỗi trường có tên bắt đầu là "field_delatted_data_". Đó có lẽ là một điều tốt. Nhưng mọi người có thể muốn hoàn thành công việc bằng cách bỏ các bảng đó.
Shai

1
Dữ liệu cho các trường bị xóa được xóa trong quá trình chạy cron. Vui lòng không bỏ các bảng đó, vì nó có thể WSOD trang web drupal của bạn.
aaronbauman

4

Wow tạo ra một lĩnh vực mất khoảng 2 giây ... nhưng nếu nó bị loại bỏ, tôi đoán nó đã bị loại bỏ.

Vì bạn không biết "ở đâu" nên về cơ bản, bạn sẽ phải tìm các bảng để chắc chắn rằng bạn dọn dẹp bất cứ thứ gì ở đó ...

  • Dropcác bảng field_data_FIELD_THE_NAME_YOU_GAVE_ITfield_revision_FIELD_THE_NAME_YOU_GAVE_IT.

  • Đồng thời vào field_configfield_config_instancetìm namecác khóa (và các bundlephím) cho trường + các gói bạn đã gắn trường đã đặt tên vào. Xóa các mục trong 2 bảng đó là tốt.

  • Xóa bộ nhớ cache trang web của bạn.


1
Vui lòng đừng làm vậy. Xem câu trả lời dưới đây: field_delete_field () sẽ gọi bất kỳ hook nào có liên quan và cũng dọn sạch bộ đệm. Nói chung, nếu bạn đang viết SQL hoặc hoạt động trực tiếp trong cơ sở dữ liệu, bạn đang làm gì đó sai.
aaronbauman

1
Nếu việc thêm các trường không thành công trong UI. Tại sao bạn cho rằng API vẫn sẽ hoạt động để xóa dữ liệu / bảng không đúng định dạng? Tôi đồng ý với câu trả lời chung của bạn, tôi không đồng ý với nó cho 100% tất cả các trường hợp.
tenken

Bạn nói đúng - tôi đã không đọc kỹ câu hỏi ban đầu. Lỗi của tôi! Phương pháp ưa thích là sử dụng field_delete_field (), nhưng nếu thất bại thì việc truy cập trực tiếp vào cơ sở dữ liệu có lẽ là cách thay thế tốt nhất / duy nhất.
aaronbauman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.