2010-06-22 17 views
5

Tôi đang chuyển từ chương trình phụ trợ MS Access sang mySQL. Điều này được sử dụng để làm việc nhưng bây giờ không và tôi không thể tìm ra vấn đề.Ngoại lệ ngày trong truy vấn Coldfusion trong cfc và mySQL

<cfargument required="false" name="expiry" type="any" default="" /> 


     <cfquery datasource='#arguments.dsn#'>  
      INSERT INTO users(expiry) 
      VALUES (<cfqueryparam value="#arguments.expiry#" cfsqltype="CF_SQL_TIMESTAMP"/>) 
     </cfquery> 

Các lĩnh vực cơ sở dữ liệu được thiết lập để datetime và mặc định NULL

Đối số là dân cư từ một trường mẫu mà là một trong hai sản phẩm nào, hoặc một ngày javascript xác nhận. Nó bị nghẹn trên cánh đồng trống.

+0

Lỗi cụ thể là gì? – ale

+0

Nguyên nhân của ngoại lệ đầu ra này là: coldfusion.runtime.locale.CFLocaleBase $ InvalidDateTimeException: trên là ngày hoặc chuỗi thời gian không hợp lệ. – Saul

Trả lời

6

Trước khi bạn gây rối với các thiết lập DSN, tôi cũng sẽ cố gắng thay đổi của bạn <cfqueryparam> như sau:

<cfqueryparam value="#arguments.expiry#" cfsqltype="CF_SQL_TIMESTAMP" null="#len(arguments.expiry) eq 0#" /> 

này sẽ vượt qua một null đúng trong trường hợp giá trị đối số là một chuỗi rỗng.

+0

Điều này đã sắp xếp tôi ra Adam, ty, vấn đề là mySQL không đặt chuỗi có độ dài bằng 0 null, Access không có những thứ như vậy !! – Saul

1

Việc triển khai trình điều khiển JDBC của MySQL cho CF không xử lý ngày NULL rất tốt.

Bạn cần phải thêm một lá cờ cấu hình để thiết lập chuỗi kết nối DSN của bạn (dưới nâng cao) trong quản trị CF

& zeroDateTimeBehavior = convertToNull

có nên đặt bạn ngay.

Rob