sql >> データベース >  >> RDS >> Mysql

MySqlをWindowsサーバーからLinuxに移動する

    MySQL/Windowsを同じバージョンのMySQL/Linuxに移行する

    次のように、すべてのデータベースをmysqldumpできます。

    C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
    

    MySQLData.sqlを移動します Linuxボックスに移動し、リロードを実行します

    mysql -uroot -p < MySQLData.sql
    

    MySQL/Windowsをより高いバージョンのMySQL/Linuxに移行する

    mysqlスキーマを除くすべてのデータベースをmysqldumpできます!!!なぜですか?

    これは、mysqlスキーマを除くすべてのデータベースをmysqldumpしてから、純粋なSQLでmysqlスキーマをダンプするWindowsバッチスクリプトです。

    rem
    rem Startup Settings
    rem
    set MYSQL_CONN=-uroot -prootpassword
    set MYSQLDUMP_OUTPUT=C:\LocalDump.sql
    set MYSQL_USERGRANTS=C:\LocalGrants.sql
    set MYSQL_TEMPGRANTS=C:\TempGrants.sql
    rem
    rem Get MySQL User Data
    rem
    set MYSQLDUMP_OPTIONS=--routines --triggers --databases
    set SQLSTMT=SELECT CONCAT('mysqldump %MYSQL_CONN% %MYSQLDUMP_OPTIONS% ',DBList)
    set SQLSTMT=%SQLSTMT% FROM (SELECT GROUP_CONCAT(schema_name SEPARATOR ' ') DBList
    set SQLSTMT=%SQLSTMT% FROM information_schema.schemata WHERE schema_name NOT IN
    set SQLSTMT=%SQLSTMT% ('information_schema','mysql','performance_schema')) A
    echo echo off > C:\RunLocalDump.bat
    mysql %MYSQL_CONN% -ANe"%SQLSTMT%" >> C:\RunLocalDump.bat
    C:\RunLocalDump.bat > %MYSQLDUMP_OUTPUT%
    rem
    rem Get MySQL User Grants
    rem
    set SQLSTMT=SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';')
    set SQLSTMT=%SQLSTMT% FROM mysql.user WHERE LENGTH(user)
    echo %SQLSTMT%
    mysql %MYSQL_CONN% -ANe"%SQLSTMT%" > %MYSQL_TEMPGRANTS%
    mysql %MYSQL_CONN% -AN < %MYSQL_TEMPGRANTS% > %MYSQL_USERGRANTS%
    del %MYSQL_TEMPGRANTS%
    

    mysqldumpとGrantsファイルを作成したら、それらをLinuxサーバーにコピーしてローカルで実行します。最初にmysqldumpを実行します。次に、助成金を読み込みます。

    試してみてください!!!



    1. mysqliがコマンドの同期外れエラーを出すのはなぜですか?

    2. 整合性制約違反:1048列'user_id'をnullにすることはできませんロールの割り当て時にエラーが発生します(Laravel 5.3)

    3. mysqlの1つのテーブルから他の1つのテーブルへの複数の外部キー

    4. SQLファイルをmysqlにインポートします