15

複数のテーブルを変更し、username VARCHAR列のサイズを999に変更しようとしています。これは、現在のサイズが小さすぎて、問題が発生しているためです。これどうやってするの?

私は以下を試しましたが、1つのテーブルで機能しましたが、複数のテーブル名を更新しようとするとエラーが返されました。

ALTER TABLE  `TABLE_NAME` CHANGE `username` VARCHAR( 999 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
4

3 に答える 3

8

単一のクエリでそれを行うことはできません。information_schema変更するテーブルと列のリストを取得するには、ビューをクエリする必要があります。次に、結果の結果セットを使用してクエリを作成しますALTER(外部アプリケーション/スクリプト内、またはカーソルとプリペアドステートメントを使用してMySQL内で)

于 2012-01-19T23:19:16.760 に答える
3

これを行う唯一の方法は、外部ファイルを使用することでした。これは私の含意です:

function changeSchema($oldName, $newName, $type, $len)
{
    $res = mysql_query("SELECT DISTINCT TABLE_NAME
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE COLUMN_NAME = '$oldName' AND 
        TABLE_SCHEMA = 'your_database_name'");
    if($res)
        while($line=mysql_fetch_object($res))
            mysql_query("ALTER TABLE `$line->TABLE_NAME` CHANGE `$oldName` `$newName` $type( $len ) NOT NULL ");
    }
}

その後、必要なテーブルを簡単に変更することができました。

于 2012-05-07T22:56:34.010 に答える
1

すべてのテーブルを変更してそのファイルを実行するクエリファイルを作成します。

于 2012-01-20T06:54:12.987 に答える