PDA

View Full Version : Lỗi truy cập cơ sở dữ liệu. Help me


DangBaoChung
25-06-2007, 09:51 PM
Các bạn ơi giúp mình với
Không hiểu sao khi mình chạy trang web của mình ở máy thì không có chuyện gì xảy ra nhưng khi up lên host (freehost) thì khi đăng nhập hoặc truy xuất vào mà có liên quan đến cơ sở dữ liệu thì nó lại báo lỗi. Web của mình viết bằng ASP, host cũng hỗ trợ asp, ai biết lí do vì sao thì chỉ mình với.
Cảm ơn! mong được sự trợ giúp của tất cả các bạn

Nothing
26-06-2007, 09:41 AM
Các bạn ơi giúp mình với
Không hiểu sao khi mình chạy trang web của mình ở máy thì không có chuyện gì xảy ra nhưng khi up lên host (freehost) thì khi đăng nhập hoặc truy xuất vào mà có liên quan đến cơ sở dữ liệu thì nó lại báo lỗi. Web của mình viết bằng ASP, host cũng hỗ trợ asp, ai biết lí do vì sao thì chỉ mình với.
Cảm ơn! mong được sự trợ giúp của tất cả các bạn
Post lỗi cụ thể ra đây các bạn xem. Nói thế kia thì ai mà biết được lỗi gì. Lỗi truy cập thì nhiều lắm. Có khi là chú không có database, có khi là có database nhưng khai báo connection sai ... :8:

DangBaoChung
27-06-2007, 01:38 PM
về phần dữ liệu thì đầy đủ (chạy ở nhà vẫn được mà).
Còn khi đăng nhập thì nó hiện ra lỗi sau:

" Microsoft JET Database Engine error '80004005'

Operation must use an updateable query."

Không hiểu tại sao cả. Mong bác NOTHING giúp đỡ

Nothing
27-06-2007, 03:31 PM
về phần dữ liệu thì đầy đủ (chạy ở nhà vẫn được mà).
Còn khi đăng nhập thì nó hiện ra lỗi sau:

" Microsoft JET Database Engine error '80004005'

Operation must use an updateable query."

Không hiểu tại sao cả. Mong bác NOTHING giúp đỡ
Anh phang mã lỗi vào google thì ra cái này.
http://support.microsoft.com/kb/175168
SYMPTOMS
You may encounter the following common error when you use ActiveX Data Objects (ADO) with Active Server Pages (ASP):
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an updateable query.

CAUSE
This article explains the four primary causes of this error and the corresponding workarounds. Although this article refers to Microsoft Access databases, the information provided here also applies to other types of databases.

RESOLUTION
This error is typically encountered when your script attempts to perform an UPDATE or some other action that alters the information in the database. This error occurs because ADO is unable to write to the database for one of the following reasons:

1. The most common reason is that the Internet Guest account (IUSR_MACHINE), which is by default part of the "Everyone" group, does not have Write permissions on the database file (.mdb). To fix this problem, use the Security tab in Explorer to adjust the properties for this file so that the Internet Guest account has the correct permissions.

NOTE: When using Microsoft Access databases with ADO, it is also necessary to give the Internet Guest account Write permissions on the directory containing the .mdb file. This is because Jet creates an .ldb file to handle database locking. You may also need to give read/write permission on the "Temp" folder because Jet may create temporary files in this directory.

2. A second cause of this error is that the database was not opened with the correct MODE for writing. If you perform the Open on the Connection object, you use the Mode property to indicate the permissions on the connection as shown here:

SQL = "UPDATE Products Set UnitPrice = 2;"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = 3 '3 = adModeReadWrite
Conn.Open "myDSN"
Conn.Execute(SQL)
Conn.Close

NOTE: By default, the MODE is set to 0(adModeUnknown), which generally allows updates.
3. Another cause of this error is that the "Read Only" setting may be checked in the Options page for this DSN in the ODBC Manager.
4. The last issue and work around pertains to any SQL data source. The error can be caused by SQL statements that violate referential integrity of the database. Here are a few of the most common queries that fail:
• The simplest groups to deal with are those you cannot change: crosstab, SQL pass-through, union, or update (or make-table) action queries that have UniqueValue properties set to Yes.

• Another very common cause is when the join includes linked ODBC tables that do not have unique indexes. In this case, there is no way for SQL to guarantee that records are unique in a table that has fields whose value will change with the query.

• One cause does have a robust workaround. If you try to update a join field on the "one" side of a "one-to-many" query it will fail unless you turn on cascading updates. This way, you delegate referential integrity to the JET engine.

Chú đọc xem trường hợp của chú rơi vào cái nào rồi sửa.