MySQL MSSQL 2 MySQL 변환, asp 게시판 소스 수정
페이지 정보
본문
Database Converter from Microsoft SQL Server to MySQL
1. 준비사항
MySQL5 설치, 포트는 우선 3306으로 하고 나중에 변경요.
MyODBC3.5 설치
MYOLEDB3 설치 후 한글 패치
MsSQL2MySQL 다운 설치 ( https://sourceforge.net/projects/mssql2mysql/ )
2. 데이타 전송하기 전에
=> my.ini 파일을 아래와 같이 설정하고 서버 재시작
아래 mysqld 옵션을 설정하지 않으면 데이타 전송시 한글과 특수문자를 쓸때 에러 발생
[client]
port=3306
[mysql]
default-character-set=euckr
[mysqldump]
default-character-set=euckr
[mysqld]
init_connect="SET collation_connection = euckr_korean_ci"
init_connect="SET NAMES euckr"
default-character-set=euckr
character-set-server=euckr
collation-server=euckr_korean_ci
=> Ms-SQL에서 자동증가 상수를 사용하였다면 해당 컬럼에 인덱스 추가해야 My-SQL에서 인식함.
3. 데이타 전송
MsSQL2MySQL 실행하고 연결 설정한 후 데이타 전송(포트가 3306이 아니면 에러남)
root 계정이 아닌 일반 계정으로 설정하여야 전송이 잘 되는 것 같습니다. (root 계정은 utf8 을 사용 추정)
방화벽은 없는지 접속자 위치는 맞는지 확인하세요. 안되면 오디비시도 설정하시구요.
4. MySQL에 사용자 추가하고 권한주고 웹에서 접속
Set DbCon=server.createobject("adodb.connection")
dbcon.open "provider=mysqlprov;location=localhost;data source=디비이름;intergrated security='';user id=아이
디;password=비번;port=포트;"
위에 설정이 안되는 경우가 있음(나도 지금 안됨 ㅡ.ㅜ) 아래 소스를 사용함.
Set dbcon=server.createobject("adodb.connection")
dbcon.open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=디비이름; user id=아이디;
password=비번; OPTION=35;port=포트;"
5. ASP 파일에서 변경해 줘야할 DB 관련 함수와 파라미터
1) TOP는 LIMIT으로 교체.
예) SELECT TOP 1 FROM board WHERE uid = 1
-> SELECT * FROM board WHERE uid = 1 LIMIT 1
2) @@IDENTITY는 작동하지 않음. LAST_INSERT_ID()로 수정.
예) SELECT @@IDENTITY
-> SELECT LAST_INSERT_ID()
3) MSSQL에서는 GROUP BY에 SELECT 뒤에 나오는 컬럼을 다 적어주어야 함.
4) GETDATE()는 NOW()(날짜와 시간)나 curdate()(날짜만)로 바꾼다.
Ms-SQL에서 날짜 형식에 빈칸을 넣으면 1900-01-01이 들어가는데 MySQL에서는 에러난다.
"1900-01-01 00:00:00" 이나 "1900-01-01" 날짜형식 삽입
5) DATEDIFF()
mysql - DateDiff( date(컬럼명이나 날짜) ,'"& date &"') = 0
mssql - DATEDIFF(day, date, GETDATE()) = 0
6) string + string 은 CONCAT 을 하면 된다.
예) SELECT str('가'+'나') as title FROM board
-> SELECT CONCAT('가'.'나') AS title FROM board
7) ROUND([숫자], [자릿수]).
8) LIKE 문에서는 '['가 있는지 확인하여야 함.
9) UNION 을 쓸 때 MYSQL에서는 SELECT를 ()로 꼭 감싸주어야 한다.
10) 게시판 수정 작업
Result.PageCount 와 Result.RecordCount 가 제일 문제인데 이것을 계산하여 해당 변수에 넣어주면 됩니다.
AbsolutePage 는 빼도 되는거 같구요.
if Request("page")="" then '넘겨받는 변수는 페이지 값만
page=1
startpage=1
else
page=cint(Request("page"))
startpage=int(page/setsize)
if startpage=(page/setsize) then
startpage=page-setsize + 1
else
startpage=int(page/setsize)*setsize + 1
end if
end if
stpage = int((page - 1) * pgsize) '각 페이지에 맞게 잘라올 시작값
sql = "Select count(*) From tbname '
Set RsCount = Dbcon.Execute (sql)
trcount = cint(RsCount(0)) 'Result.RecordCount
IF trcount mod pgsize = 0 THEN
pgcount = trcount / pgsize 'Result.PageCount
ELSE
pgcount = (trcount / 10) + 1
END IF
sql="SELECT * FROM tbname ORDER BY ref DESC limit " & stpage & "," & pgsize
Set result = Dbcon.Execute (sql)
select mref = Max(ref) from 테이블 => select Max(ref) as mref from 테이블
select count(*) from 테이블
여기서 반환값이 상수형이 아닌 문자형으로 나와서 Rs(0) > 0 이렇게 비교하면 에러나는 것 같음.
IF cint(Rs(0)) > 0 THEN 이렇게 쓰세요.
관련자료
http://www.taeyo.pe.kr/threadboard/Content.asp?table=Board_Asp&seqs=123713
1. 준비사항
MySQL5 설치, 포트는 우선 3306으로 하고 나중에 변경요.
MyODBC3.5 설치
MYOLEDB3 설치 후 한글 패치
MsSQL2MySQL 다운 설치 ( https://sourceforge.net/projects/mssql2mysql/ )
2. 데이타 전송하기 전에
=> my.ini 파일을 아래와 같이 설정하고 서버 재시작
아래 mysqld 옵션을 설정하지 않으면 데이타 전송시 한글과 특수문자를 쓸때 에러 발생
[client]
port=3306
[mysql]
default-character-set=euckr
[mysqldump]
default-character-set=euckr
[mysqld]
init_connect="SET collation_connection = euckr_korean_ci"
init_connect="SET NAMES euckr"
default-character-set=euckr
character-set-server=euckr
collation-server=euckr_korean_ci
=> Ms-SQL에서 자동증가 상수를 사용하였다면 해당 컬럼에 인덱스 추가해야 My-SQL에서 인식함.
3. 데이타 전송
MsSQL2MySQL 실행하고 연결 설정한 후 데이타 전송(포트가 3306이 아니면 에러남)
root 계정이 아닌 일반 계정으로 설정하여야 전송이 잘 되는 것 같습니다. (root 계정은 utf8 을 사용 추정)
방화벽은 없는지 접속자 위치는 맞는지 확인하세요. 안되면 오디비시도 설정하시구요.
4. MySQL에 사용자 추가하고 권한주고 웹에서 접속
Set DbCon=server.createobject("adodb.connection")
dbcon.open "provider=mysqlprov;location=localhost;data source=디비이름;intergrated security='';user id=아이
디;password=비번;port=포트;"
위에 설정이 안되는 경우가 있음(나도 지금 안됨 ㅡ.ㅜ) 아래 소스를 사용함.
Set dbcon=server.createobject("adodb.connection")
dbcon.open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=디비이름; user id=아이디;
password=비번; OPTION=35;port=포트;"
5. ASP 파일에서 변경해 줘야할 DB 관련 함수와 파라미터
1) TOP는 LIMIT으로 교체.
예) SELECT TOP 1 FROM board WHERE uid = 1
-> SELECT * FROM board WHERE uid = 1 LIMIT 1
2) @@IDENTITY는 작동하지 않음. LAST_INSERT_ID()로 수정.
예) SELECT @@IDENTITY
-> SELECT LAST_INSERT_ID()
3) MSSQL에서는 GROUP BY에 SELECT 뒤에 나오는 컬럼을 다 적어주어야 함.
4) GETDATE()는 NOW()(날짜와 시간)나 curdate()(날짜만)로 바꾼다.
Ms-SQL에서 날짜 형식에 빈칸을 넣으면 1900-01-01이 들어가는데 MySQL에서는 에러난다.
"1900-01-01 00:00:00" 이나 "1900-01-01" 날짜형식 삽입
5) DATEDIFF()
mysql - DateDiff( date(컬럼명이나 날짜) ,'"& date &"') = 0
mssql - DATEDIFF(day, date, GETDATE()) = 0
6) string + string 은 CONCAT 을 하면 된다.
예) SELECT str('가'+'나') as title FROM board
-> SELECT CONCAT('가'.'나') AS title FROM board
7) ROUND([숫자], [자릿수]).
8) LIKE 문에서는 '['가 있는지 확인하여야 함.
9) UNION 을 쓸 때 MYSQL에서는 SELECT를 ()로 꼭 감싸주어야 한다.
10) 게시판 수정 작업
Result.PageCount 와 Result.RecordCount 가 제일 문제인데 이것을 계산하여 해당 변수에 넣어주면 됩니다.
AbsolutePage 는 빼도 되는거 같구요.
if Request("page")="" then '넘겨받는 변수는 페이지 값만
page=1
startpage=1
else
page=cint(Request("page"))
startpage=int(page/setsize)
if startpage=(page/setsize) then
startpage=page-setsize + 1
else
startpage=int(page/setsize)*setsize + 1
end if
end if
stpage = int((page - 1) * pgsize) '각 페이지에 맞게 잘라올 시작값
sql = "Select count(*) From tbname '
Set RsCount = Dbcon.Execute (sql)
trcount = cint(RsCount(0)) 'Result.RecordCount
IF trcount mod pgsize = 0 THEN
pgcount = trcount / pgsize 'Result.PageCount
ELSE
pgcount = (trcount / 10) + 1
END IF
sql="SELECT * FROM tbname ORDER BY ref DESC limit " & stpage & "," & pgsize
Set result = Dbcon.Execute (sql)
select mref = Max(ref) from 테이블 => select Max(ref) as mref from 테이블
select count(*) from 테이블
여기서 반환값이 상수형이 아닌 문자형으로 나와서 Rs(0) > 0 이렇게 비교하면 에러나는 것 같음.
IF cint(Rs(0)) > 0 THEN 이렇게 쓰세요.
관련자료
댓글목록
등록된 댓글이 없습니다.