PDA

View Full Version : Mong ai có thể giúp mình tìm lỗi này được ko?



elemen
10-01-2012, 22:43
Mình new file sau đó, tạo ra database với table, viết lệnh. Nhưng cứ chạy là nó báo lỗi đã tồn tại tên database với table này rồi trong khi mình còn chưa tạo nó làn nào khác. Mà nếu mình đổi tên đi nó cũng báo có rồi. Ai giải thích hộ mình với ,:(((((((((((

hoangnnm
10-01-2012, 23:00
Có vài lý do, trong đó thường gặp nhất là lỗi biên dịch của sql . Nghĩa là mặc dù bạn đã xóa nhưng sql vẫn hiểu là table đó vẫn còn tồn tại trong db (suy ra từ lần biên dịch gần nhất, vì nếu bạn liên tục f5 code để chạy thì sql chỉ dùng 1 lần biên dịch đầu tiên để chạy đoạn code đó) .

Đấy là mình nói theo kinh nghiệm và khả năng hiểu của mình thôi chứ chưa chắc đã đúng :)

elemen
10-01-2012, 23:22
Bạn ơi cho mình hỏi: thế sao mình copy sang cái file mới nó cũng báo lỗi đó :((

phuochantien
10-01-2012, 23:40
Mình vẫn chưa hiểu câu hỏi của bạn lắm! Bạn nói rõ hơn được không. Bạn viết câu lệnh và khi chạy câu lệnh đó thì nó bá lỗi ah?

hoangnnm
11-01-2012, 08:51
Bạn ơi cho mình hỏi: thế sao mình copy sang cái file mới nó cũng báo lỗi đó :((
Bạn đăng 1 phần code lên mình xem thử nhé .

elemen
11-01-2012, 16:23
Đây là code của mình:

use c0610k_test1
go
if DB_ID('assignmets') is not null
drop database assignments;

Create database assignments
create table student
(
RN int identity primary key,
name nvarchar(30) not null,
age int null,
gender int null
)
create table subject
(
sID int identity primary key,
sname nvarchar(15) not null
)
create table student_subject
(
RN int not null,
sID int not null,
mark int null,
date datetime
)
go


Nó cứ báo lỗi này:
Msg 1801, Level 16, State 3, Line 4
Database 'assignments' already exists. Choose a different database name.
Msg 2714, Level 16, State 6, Line 5
There is already an object named 'student' in the database.

Mà mình ko nghĩ mình viết sai câu lệnh :D

traihu
11-01-2012, 17:04
Bạn bỏ đoạn 2 dòng code
"use c0610k_test1
go"
này đi. Thử xem nó có chạy không.

elemen
11-01-2012, 20:14
Vẫn lỗi đó bạn ạ. Nó vẫn báo có tên database và table rồi :-s

hoangnnm
11-01-2012, 21:50
Vẫn lỗi đó bạn ạ. Nó vẫn báo có tên database và table rồi :-s

Rất là đơn giản, bạn gõ sai tên database
Hãy nhìn lại thật kỹ :



if DB_ID('assignmets') is not null
drop database assignments;

Ở trên la assignmets, ở dưới lại là assignments

elemen
11-01-2012, 22:20
Thank bạn hoangnnm, ko ngờ lỗi sai chính tả , nhưng mình vẫn bị lỗi báo tên table đã tồn tại. Làm sao để nó mất hả bạn. Mình bị hoài mà ko sao sửa dc :(

hoangnnm
11-01-2012, 22:23
Thank bạn hoangnnm, ko ngờ lỗi sai chính tả , nhưng mình vẫn bị lỗi báo tên table đã tồn tại. Làm sao để nó mất hả bạn. Mình bị hoài mà ko sao sửa dc :(

Sau khi đã tạo database thì bạn phải use database đó nữa chứ :)

elemen
12-01-2012, 16:19
Mình nghiệp dư quá. Thank bạn @.@

gust2012
13-01-2012, 21:04
Lỗi của bạn theo tôi là ở chổ bạn xóa Database sau đó tạo lại. Tức là như sau: bạn xóa database nếu nó đã có (đã tồn tại do lần tạo trước) rồi sau đó thực hiện tạo mới lại database nhưng sau lẹnh tạo lại bạn lại không viết lệnh chọn sử dụng database vừa tạo lại, code bạn có thể sửa lại như sau:

use c0610k_test1 ---Không hiếu lệnh này của bạn để làm gì
go
--If này như của bạn là kiểm tra tồn tại, có thì xóa else không
if DB_ID('assignmets') is not null
drop database assignments;
--Tiến hành tạo lại database
GO
Create database assignments
--Gọi lệnh chọn database này
Use [assignments]
--Lệnh GO dùng để báo cho SQL biết hoàn tất một đoạn lệnh ( tôi nghĩ như thế)
GO
create table student
(
RN int identity primary key,
name nvarchar(30) not null,
age int null,
gender int null
)
GO
create table subject
(
sID int identity primary key,
sname nvarchar(15) not null
)
GO
create table student_subject
(
RN int not null,
sID int not null,
mark int null,
date datetime
)
go
================== HAPPY NEW YEAR !==========================

elemen
15-01-2012, 00:02
Cho mình hỏi, sao cứ chạy được 1 lần ko lỗi j, mà là lần sau ấn chạy nó lại báo tất cả các table đều cố rồi. mình phải tắt chương trình đi bật lại thì nó ko có lỗi đó nữa. Có cách nào sửa ko mọi người :D

hoangnnm
15-01-2012, 10:07
Cho mình hỏi, sao cứ chạy được 1 lần ko lỗi j, mà là lần sau ấn chạy nó lại báo tất cả các table đều cố rồi. mình phải tắt chương trình đi bật lại thì nó ko có lỗi đó nữa. Có cách nào sửa ko mọi người :D
Chú ý 2 câu đầu tiên trong đoạn lệnh của bạn rất quan trọng, bạn không thể drop 1 db khi đang sử dụng nó, bởi vậy đầu tiên bạn phải use 1 database khác ( cũng giống như không thể xóa file đang mở ) . Bạn nên sửa lại là


use master
go

thay vì :


use c0610k_test1
go


Còn vẫn có lỗi thì bạn hãy post đầy đủ thông báo lỗi lên nhé .

vuht2000
17-01-2012, 20:22
Bạn cần thêm vào giữa 2 lệnh sau:


Create database assignments
/*bắt đầu đoạn lệnh mới */
GO
USE assignments
GO
/*kết thúc đoạn lệnh mới */
create table student