【发布时间】:2018-10-04 13:48:55
【问题描述】:
我在 IIS 上成功安装了 Laravel。我也用 laravel 成功连接了 MSSQL DB。我运行工匠命令php artisan make:auth 和php artisan migrate。创建登录/注册页面。现在当我注册一个新用户时,我得到一个错误。:
SQLSTATE[22007]:[Microsoft][ODBC Driver 17 for SQL Server][SQL [Server]Bei der Konvertierung eines nvarchar-Datantyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs。 (SQL: 插入 [users] ([name], [email], [password], [updated_at], [created_at]) 值 (john doe, j.doe@example.com, $2y$10$zPpJKp.clN8/SrhBhrupmO1ydWFb6UmrAUaD0Wid7fQHt85ieSwNi, 2018-04-24 10:03:26.286, 2018-04-24 10:03:26.286))
翻译成英文:
将 nvarchar 数据类型转换为 datetime 数据类型导致 超出范围的日期时间值。”
我的迁移如下所示:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->tinyInteger('active')->default(1);
$table->rememberToken();
$table->timestamps();
});
}
在 MSSQL 中,我使用的是 SQL_Latin1_General_CP1_CI_AS。
有人知道问题出在哪里吗?
更新 '快速解决方案:我将 mssql 列 created_at 和 updated_at 更改为 nvarchars(50)
更新1 另一种解决方案是用这种方法覆盖它
public function fromDateTime($value)
{
// Only for MSSQL
if(env('DB_CONNECTION') == 'sqlsrv') {
return Carbon::parse(parent::fromDateTime($value))->format('Y-d-m H:i:s:000');
}
return $value;
}
【问题讨论】: