:Laravel 마이그레이션에서 nullable 필드 해결 방법의 이름을 바꿉니 까?
class CreateTestTable extends Migration
{
public function up()
{
Schema::create('test', function (Blueprint $table) {
$table->increments('id');
$table->dateTime('dueDate')->nullable();
});
}
}
: 마이그레이션을 만들기
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'due_date' (SQL: ALTER TABLE test
CHANGE dueDate due_date DATETIME DEFAULT 'NULL')
을
class RenameColumn extends Migration
{
public function up()
{
Schema::table('test', function(Blueprint $table) {
$table->renameColumn('dueDate', 'due_date');
});
}
}
이 작업을 얻을 수있는 해결 방법이 있습니까 :
열 이름을 바꿀 두 번째 마이그레이션을 만드시겠습니까?
교리/issue dbal에 따르면 기본 값으로 표현을 허용하고 리터럴에서 그들을 를 구별하기 위해
당신이 방법을 시도 할 수는 Mariadb 지금 information_schema.column 테이블에 기본값을 인용한다. 이 변경으로 인해 많은 () 비 호환성이 (Oracle-) Mysql/MariaDB 플랫폼간에 발생합니다. 대신 MariaDB 대한 특정 SchemaManager를 생성
, 이것은 P 취한 용액을 /R 현재 MySQLSchemaManager의 변화를 도입하는 매핑 (방법 : getMariaDb1027ColumnDefault()).
MariaDB 10.2.7에서 정보 스키마 변경이 포함됩니다 : (콜럼 기본값은 Null을 허용하지 이며, 디폴트가 제공하지 않는 경우 예외 : NULL이 INFORMATION_SCHEMA에 저장됩니다)
NULL은 이제 'NULL'로 인용, 편집을 : 예외 참조 https://jira.mariadb.org/browse/MDEV-14053 문자열 기본값은 입니다. 'NULL'문자열을 저장하려면 기본값을 'NULL'로 설정하십시오. 이스케이프 처리 : " '"은 정보 스키마에서 자동으로 "' '"(으)로 변경됩니다. 모델 (스키마 비교)에서 " '"를 사용하여 수동으로 기본값을 이스케이프하지 않으면 에 영향을 미치지 않아야합니다. 참조 포인트 5를 참조하십시오. 디폴트 리터럴 값 은 자동 CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME에 대한 지원을 제공하기 위해 인용 부호로 묶어야합니다. 기본값은 'current_timestamp()', 'currdate()', 'currtime()'으로 자동 변경됩니다. 스키마 diff를 방지하기 위해 스키마는 원래 값으로 다시 매핑됩니다.
$ table-> renameColumn ('dueDate', 'due_date') -> nullable()'을 사용해 보셨나요? –
열을 Nullable로 만들지 못하게하고 이름을 바꾸고 다시 nullable로 만들려고 했습니까? '$ table-> nullable (false) -> change()' –