![](/img/trans.png)
[英]Error converting data type nvarchar to numeric when trying to create a record using Eloquent
[英]Error converting nvarchar to datetime data type using Laravel and MSSQL
我在IIS上成功安装了Laravel。 我也成功地将laravel连接了MSSQL DB。 我运行artisan命令php artisan make:auth
和php artisan migrate
。以进行登录/注册页面。 现在,当我注册一个新用户时,出现错误:
SQLSTATE [22007]:[Microsoft] [用于SQL Server的ODBC驱动程序17] [SQL Server]在日期时间中的变量-在数据库中运行的Datentyp位置。 (SQL:在[用户]([名称],[电子邮件],[密码],[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数据类型的转换导致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
。 有人知道问题是什么吗?
UPDATE '快速解决方案:我将mssql列created_at和updated_at更改为nvarchars(50)
UPDATE1另一个解决方案是使用此方法覆盖它
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;
}
如果有人遇到这个问题,我使用受保护的$ dateFormat ='dmY H:i:s'解决了; //在模型中根据需要设置格式。
如果Jefers的答案不起作用,请在您的模型中尝试以下操作:
public function getDateFormat(){
return 'Y-d-m H:i:s.v';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.