2013-04-01 28 views
8

Khi sử dụng sqlite3 qua adb shell phím mũi tên, thay vì di chuyển con trỏ đến vị trí mong muốn hoặc triệu tập các cơ sở lịch sử, sau đây được thể hiện trong màn hình: ^[[A, ^[[B, ^[[C, ^[[D.phím Cursor không hoạt động khi sử dụng sqlite3 từ adb shell

Tôi đang sử dụng Mac OS X và tôi đã thử Thiết bị đầu cuốiiTerm trình giả lập thiết bị đầu cuối.

Có ai biết cách sửa lỗi này không?

+0

Tình huống tương tự là với Linux. Trong các phím mũi tên Windows hoạt động chính xác. –

+0

Có điều gì đó như [rlwrap] (http://freecode.com/projects/rlwrap) giải quyết được sự cố không? – chobok

Trả lời

4

Để cho phép chỉnh sửa và lịch sử trong đầu vào của chương trình bảng điều khiển, chương trình đó phải được liên kết với thư viện readline.

Công cụ sqlite3 không hỗ trợ readline, nhưng trên Android, hỗ trợ readline đã bị tắt. (Có lẽ vì readline chỉ được cấp phép theo GPL.)

+0

Trên thực tế, khi tôi khởi động 'adb shell', lịch sử lệnh có vẻ hoạt động, ít nhất một phần, vì tôi có thể chuyển sang các lệnh đã thực hiện trước đó. Bên cạnh vấn đề với thư viện 'readline', điểm chính ở đây là ứng dụng không ánh xạ chính xác các phím mũi tên, bởi vì nó không nhận ra ngay cả các phím trái và phải. Bất kỳ ý tưởng về điều này? –

+0

'adb' chạy một phần trên máy chủ. Các phím con trỏ sẽ được xử lý bởi 'readline'. –

+0

Cảm ơn @CL .. Điều cần biết. Vì vậy, có lẽ không có cách nào dễ dàng để làm cho khả năng chỉnh sửa dòng và lịch sử hoạt động. Tuy nhiên, nếu ai đó đã tìm thấy một giải pháp, vui lòng đăng nó ở đây. –

4

Giải pháp thay thế sẽ là sử dụng phiên bản SQLite cục bộ có hỗ trợ readline.

  1. Sao chép một tập tin cơ sở dữ liệu từ thiết bị của bạn để máy tính cục bộ của bạn:
    adb pull <database-file-on-device>

  2. Sử dụng phiên bản địa phương của bạn của SQLite để truy cập các tập tin cơ sở dữ liệu:
    sqlite3 <database-file-on-local>

  3. Nếu bạn đã thực hiện thay đổi bạn có thể chuyển chúng sang thiết bị. Sao chép tập tin cơ sở dữ liệu địa phương của bạn từ máy tính cục bộ của bạn vào điện thoại:
    sqlite3 <database-file-on-local> <database-file-on-device>

2

Bạn có thể sử dụng chức năng lệnh trước đó trong adb shell. Vì vậy, chỉ adb shell. Sau đó, cd vào thư mục/data/data // databases. Từ đây chạy (ví dụ): sqlite3 "select * from"

Sau đó, bạn có thể sử dụng mũi tên lên để làm lại lệnh đó. Loại hack, nhưng tốt hơn là phải gõ lại lệnh bên trong dấu nhắc tương tác sqlite3.

Các vấn đề liên quan