如何更改 SQL 中现有 table 的列长度?
How to change column length of existing table in SQL?
我有一个 SQL table 将包含 (TEXT/VARCHAR) 列一定长度。
如何在不删除或硬编码现有数据库的情况下更改现有列的长度 table。
2020_02_13_065846_create_users_documents_table.php
public function up()
{
Schema::create('user_documents', function (Blueprint $table) {
$table->increments('id');
$table->string('upload_url', 200)->nullable();
$table->string('user_name', 50)->nullable();
});
现在我想通过创建一个新的 table 将列 user_name
的长度更改为 200。
- 开发方案
您在该文件中更正它并使用 php artisan migrate:fresh
刷新您的迁移,但是 您丢失了数据库中的所有数据
- 生产解决方案
使用 alter 语句进行新的迁移。
public function up()
{
\DB::statement('ALTER TABLE user_documents ALTER COLUMN upload_url VARCHAR (200)');
}
您只需 modify 您的专栏:
change 方法允许您修改现有列的类型和属性。例如,您可能希望增加字符串列
的大小
进行新的迁移,设置此语句:
Schema::table('users', function ($table) {
$table->string('upload_url', 500)->change();
$table->string('user_name', 500)->change();
});
我有一个 SQL table 将包含 (TEXT/VARCHAR) 列一定长度。
如何在不删除或硬编码现有数据库的情况下更改现有列的长度 table。
2020_02_13_065846_create_users_documents_table.php
public function up()
{
Schema::create('user_documents', function (Blueprint $table) {
$table->increments('id');
$table->string('upload_url', 200)->nullable();
$table->string('user_name', 50)->nullable();
});
现在我想通过创建一个新的 table 将列 user_name
的长度更改为 200。
- 开发方案
您在该文件中更正它并使用 php artisan migrate:fresh
刷新您的迁移,但是 您丢失了数据库中的所有数据
- 生产解决方案
使用 alter 语句进行新的迁移。
public function up()
{
\DB::statement('ALTER TABLE user_documents ALTER COLUMN upload_url VARCHAR (200)');
}
您只需 modify 您的专栏:
change 方法允许您修改现有列的类型和属性。例如,您可能希望增加字符串列
的大小进行新的迁移,设置此语句:
Schema::table('users', function ($table) {
$table->string('upload_url', 500)->change();
$table->string('user_name', 500)->change();
});