Php
這些錯誤資訊是什麼意思?
這是在 PHP 腳本中的 AWS AMI EC2 Linux 實例上執行,使用 dblib 和 PDO 連接到遠端 Sybase 數據庫(Sybase 版本 11.0.1.2596)。伺服器具有具有以下設置的 freetds:
Compile-time settings (established with the "configure" script) Version: freetds v0.91 freetds.conf directory: /etc MS db-lib source compatibility: yes Sybase binary compatibility: yes Thread safety: yes iconv library: yes TDS version: 4.2 iODBC: no unixodbc: yes SSPI "trusted" logins: no Kerberos: yes
有時,當我們在 sybase 電腦上執行查詢時,我們會收到這樣的錯誤(令牌可能會有所不同):
TDS: unexpected token 95 [0] (severity 0) [(null)]
查詢有時會在出現此錯誤後執行,有時會失敗。我在網上搜尋過,但找不到此錯誤的含義或解決方法。以下是其中一個查詢的範例:
-- 999 | Hammil | 2017-04-05 08:23:29 SELECT 999 as 'site_id', (select rest_name from micros.rest_def) as 'location', now() as 'dt_run', emp_seq, employee_number as 'obj_num', last_name, first_name, check_number, xfer_from_check, xfer_from_type, xfer_to_check, xfer_to_type, check_id, table_number, table_name, group_number, cover_count, order_type, order_type_name, business_date, check_open_date_time, check_closed_date_time, table_open_date_time, printed_count, sub_ttl, tax_ttl, auto_svc_ttl, other_svc_ttl, paymnt_ttl, amount_due_ttl, sp_error FROM micros.micros.v_R_guest_checks x where x.check_closed_date_time is null;
有時我們會收到此錯誤:
SQLSTATE[HY000]: General error: 20047 DBPROCESS is dead or not enabled [20047] (severity 1) [(null)]
發生這種情況時,我可以執行
nc -v -w 4 xxx.xxx.xxx.xxx 2638
它返回
Connection to xxx.xxx.xxx.xxx 2638 port [tcp/sybaseanywhere] succeeded!
但我會繼續收到錯誤幾分鐘,然後它就消失了。
TDS 中的意外標記表明向 Sybase 正在偵聽的 TCP 埠發送了錯誤的網路數據包。
這表明以下兩件事之一:
- TCP TDS 數據包損壞的間歇性網路連接問題
- 您有一些程序試圖在不使用 TDS 的情況下連接到 Sybase 實例。
我已經看到#2 發生在正在尋找開放埠的安全掃描程序中。
從您的症狀來看,這聽起來像是網路連接問題。由於 Sybase Anywhere 伺服器與您的客戶端電腦不在同一網段,我傾向於認為客戶端需要優雅地處理連接問題。