1

以前、PHPスクリプトを使用してすべてのフィールドの言語を変更しましたが、すべてのUNSIGNEDMEDIUMINTをUNSIGNEDINTに切り替えるための何も見つかりません。これは可能ですか?それらすべてを手動で切り替える必要がありますか?:o

Mediumintが小さすぎることが判明しました...したがって、多くのフィールドを変更する必要があります/:

編集:入力に感謝します。簡単な自動化された方法がないことがわかったので、手動で行うかもしれません。自動化された方法があれば、100以上のフィールドを手動で変更する時間を無駄にしたくありませんでした。

4

3 に答える 3

2

MySQL には、「タイプ X のすべてのカラムを取得してタイプ Y に変更する」という自動化された方法がありません。データベースにクエリを実行して、information_schema変更が必要な列をALTER TABLE特定し、その情報に基づいてクエリを作成できる場合があります。

具体的には、information_schema.columns表を見てください。

于 2012-07-20T04:07:07.360 に答える
1

以下のクエリを使用してmediumint、特定のデータベース内のすべての列 (それぞれのテーブル名を持つ) を検索し、結果を繰り返し処理してALTER、選択したプログラミング言語でクエリを生成および実行できます。

SELECT 
    table_name, column_name, numeric_precision, column_type
FROM
    information_schema.columns
WHERE
    TABLE_SCHEMA = 'DATABASE_NAME'
        AND data_type = 'mediumint';
于 2019-03-10T17:16:19.927 に答える
0

SQL で実行する必要があるため、スクリプトを作成することが理にかなっている場合は、それを実行しますが、ほとんどの場合、手動で実行する必要があります。

あまり記述的でないデータ型からより記述的であるデータ型に移行するので、問題ないはずです。

ALTER TABLE構文を使用すると、次のように動作するはずです。

ALTER TABLE table_name MODIFY column_name INT UNSIGNED
于 2012-07-20T04:11:39.733 に答える