1 回答

TA貢獻2021條經驗 獲得超8個贊
我相信Laravel如何配置DBAL存在一些問題;但是,我認為以下內容將解決您的問題:
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('rooms', function (Blueprint $table) {
$table->boolean('conversion')->charset(null)->collation(null)->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('rooms', function (Blueprint $table) {
$table->string('conversion')->change();
});
}
我基于查看 的源代碼來得出這個答案。您可以在此處看到,在您的實例中,您不希望為 bigint 指定字符集或排序規則。為了跳過這兩個選項,我認為唯一的解決方案是手動將這兩個值設置為 null。下面是形成MySQL查詢該部分的源代碼:framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php
/**
* Append the character set specifications to a command.
*
* @param string $sql
* @param \Illuminate\Database\Connection $connection
* @param \Illuminate\Database\Schema\Blueprint $blueprint
* @return string
*/
protected function compileCreateEncoding($sql, Connection $connection, Blueprint $blueprint)
{
// First we will set the character set if one has been set on either the create
// blueprint itself or on the root configuration for the connection that the
// table is being created on. We will add these to the create table query.
if (isset($blueprint->charset)) {
$sql .= ' default character set '.$blueprint->charset;
} elseif (! is_null($charset = $connection->getConfig('charset'))) {
$sql .= ' default character set '.$charset;
}
// Next we will add the collation to the create table statement if one has been
// added to either this create table blueprint or the configuration for this
// connection that the query is targeting. We'll add it to this SQL query.
if (isset($blueprint->collation)) {
$sql .= " collate '{$blueprint->collation}'";
} elseif (! is_null($collation = $connection->getConfig('collation'))) {
$sql .= " collate '{$collation}'";
}
return $sql;
}
- 1 回答
- 0 關注
- 99 瀏覽
添加回答
舉報