반응형

출처 : https://stackoverflow.com/questions/67093/how-do-i-quickly-rename-a-mysql-database-change-schema-name

MySQL 데이터베이스의 이름(스키마 이름 변경)을 빠르게 변경하는 방법?

MySQL 매뉴얼에서 이를 다루고 있습니다.

주로 저는 데이터베이스를 덤프하여 새로운 이름으로 불러오고는 했습니다. 이는 매우 큰 데이터베이스를 위한 선택지는 아닙니다. RENAME {DATABASE | SCHEMA} db_name TO new_db_name;나쁜 일을 하고 소수에 버전에서만 존재하며 무엇보다도 나쁜 생각입니다.

이것은 MyISAM과는 매우 다르게 InnoDB에서 작동해야 합니다.


49개의 답변 중 1개

InnoDB에서, 다음은 잘 작동합니다: 새로운 빈 데이터베이스를 만들고 새로운 데이터베이스로 각 테이블의 이름을 변경합니다.

RENAME TABLE old_db.table TO new_db.table;

그 후에 권한을 조절할 필요가 있습니다.

shell에서 스크립트로 다음 중 하나를 사용할 수 있습니다.

mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \ 
    do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done

또는

for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;

메모:

  • -p 옵션과 암호 사이에는 공백이 없습니다. 데이터베이스에 암호가 없는 경우 -u username -ppassword 부분을 제거하십시오.
  • 일부 테이블에 트리거가 있는 경우 위의 방법을 사용하여 다른 데이터베이스로 이동할 수 없습니다. (잘못된 스키마 트리거 오류가 발생합니다) 이 경우 기존 방법을 사용하여 데이터베이스를 복제한 다음 이전 데이터베이스를 삭제하십시오.
    mysqldump old_db | mysql new_db
  • 만약 stored 프로시저가 있다면 다음처럼 복사할 수 있습니다.
    mysqldump -R old_db | mysql new_db
반응형
반응형

※ 일반적으로 Value타입은 null이 없음. Reference타입은 null은 있음.

※ 필요한 사전지식 : 값/참조형식의 의해

Nullable 타입

Value타입(값 형식)에 NULL값을 설정할 수 있다는 새로운 형태의 Value타입(값 형식)

예) int i = null;

나오게 된 배경

Database 시스템과 프로그래밍 언어의 자료처리의 차이점

Database 

모든 필드는 제약조건의 설정에 따라 null일 수 있다.

OOP 언어

데이터 타입은 값 형식과 참조 형식으로 구분됨.

값 형식은 null을 가질 수 없고 기본 값을 가짐.

참조형식은 null을 가질 수 있음.


데이터조회 예시

C#1.0의 예시

int iAge;

...

if( !dbReader.IsDBNull(dbReader.GetOrdinal("Age")) )

   iAge = System.Convert.ToInt32(dbReader["Age"]);

else

    iAge = ???; // 실제 DB에 값이 null일 경우? 보통 -1로 표현하기도 함.

C#2.0

int? iAge;

if( !dbReader.IsDBNull(dbReader.GetOrdinal("Age")) )

   iAge = System.Convert.ToInt32(dbReader["Age"]);

else

    iAge = null; // 값에 null을 표현 가능하다!


int otherValue = iAge ?? 0;  // null이면 0으로 할당.


주의사항

값 형식에만 사용.

예시)

string? Message = "Hello, World!"; // compile error

MyClass? myClass; // compile error

형변환

int? x = null;

int y = x;          // compile error

int y = (int)x;    // null일 경우 Runtime Error!! -> InvalidOperationException

int y = x.Value; // null일 경우 Runtime Error!! -> InvalidOperationException

int y = x ?? 0;   // 좋은 선택~


타입 정의방법

int i;

System.Int32 i = 0; // Common type system(CTS) 여러 언어에 대해...

int? x1 = 123;

System.Nullable<int> z1 = 10;    // CLR 타입. 타입 제약조건으로 값형식만 받을 수 있다.


if(i1==null) i = 0; else i = (int)i1;   // i1.HasValue를 이용할 수 있음.


값 형식과의 연산

int? i3 = null;

int? j3 = i3 + 100; // 결과는 null, null+-의 결과는 null

null에 대한 출력값은 '빈 문자열'이다.


Nullable 타입 실제 구현 예시

struct MyNullable<T> where T:struct

{

    public T value;

    private bool IsNull;

    public bool HasValue

    {

        get

        {

            return !IsNull;

        }

    }


선언방법

선언 : T?

System.Nullable<T>

null 할당 가능 int? x = null;

null 확인

int? x;

...

if(x.HasValue) or if(x!=null)

?? Operator

int? x;

int y = x ?? 0;

값 형식과의 연산

int? x;

int? y = x + 1; // x가 null이면 y도 null

반응형

'C#' 카테고리의 다른 글

Iterator  (0) 2009.09.07
Generic  (0) 2009.09.07
Partial Class  (0) 2009.08.29
C# 3장 간단 정리  (0) 2009.07.30
C# 2장 간단 정리  (0) 2009.07.30

+ Recent posts