改变模式生成器中的列长度?

Posted

技术标签:

【中文标题】改变模式生成器中的列长度?【英文标题】:Alter column length in Schema builder? 【发布时间】:2012-11-28 03:34:27 【问题描述】:

我有两个字段需要增加字符限制。我通读了文档,令我惊讶的是,我没有找到它的选择。有可能吗?如果没有,我应该如何解决这个问题?

我可以删除该列并使用正确的属性重新创建它,但我不想丢失数据库中的任何数据。

【问题讨论】:

【参考方案1】:

使用Raw Queries:

/**
 * Make changes to the database.
 *
 * @return void
 */
public function up()

  DB::query('ALTER TABLE mytable MODIFY mycolumn VARCHAR(new-length)');


/**
 * Revert the changes to the database.
 *
 * @return void
 */
public function down()

  DB::query('ALTER TABL mytable MODIFY mycolumn VARCHAR(old-length)');

替换mytablemycolumnnew-lengthold-length

对于 Laravel 5+,将 DB::query 替换为 DB::statement

【讨论】:

在 Laravel 5.1 中,我不得不将 DB::query 更改为 DB::statement。 我认为SQL命令大写,表名和列名小写更容易接受。【参考方案2】:

如果名称是系统的关键字,则使用 `` 作为列名。否则您将收到“语法错误或访问冲突”。

DB::query("alter table MYTABLE modify `MYCOLUMN` varchar(new-length)");

【讨论】:

【参考方案3】:

对于 Laravel 4

DB::update('ALTER TABLE `my_table` MODIFY `my_column` VARCHAR(<new length>)');

【讨论】:

我是 laravel 4 的新手...如何运行更新任务?【参考方案4】:

对于 Laravel 5:

Schema::table('users', function($table)

    $table->string('name', 50)->change();
);

查看docs 了解更多信息。

【讨论】:

以上是关于改变模式生成器中的列长度?的主要内容,如果未能解决你的问题,请参考以下文章

按照 C# 中的“digitStringDigit”等特定模式生成唯一 ID

如何生成特定长度的单列?

如何从 CSV 为 PostgreSQL 副本生成模式

如何将数据库中的列字段添加到字符串生成器 c# 并实现两列布局

如何为数据库中的列生成唯一字符串?

如何使用自动生成的列隐藏 ASP.NET GridView 中的列?