我得到这个错误:
sqlstate[22007]:无效的日期时间格式:1366不正确的字符串值:'\xbd inch…'用于第1行的“column name”列
我的数据库、表和列的格式为utf8mb4\u unicode\u ci,列名为type text和null。
这是列名的值
[列名]=>11之前的一些文本▒ 和其他文字之后,和之后。
但是,我等待laravel将引号添加到列的值中,因为这些值用逗号(,)分隔。具体如下:
[列名]=>'11之前的一些文本▒ 以及后面的其他文字
请参见下面的模式
Schema::create('mws_orders', function (Blueprint $table) {
$table->string('custom-id');
$table->string('name');
$table->string('description')->nullable();
$table->string('comment')->nullable();
$table->integer('count')->nullable();
$table->text('column-name')->nullable();
$table->timestamps();
$table->primary('custom-id');
});
我一直在谷歌上寻找,但没有任何解决方案,尚未。
有人知道如何解决这个问题吗?
我用的是laravel5.5和mariadb 10.2.11。
5条答案
按热度按时间kmb7vmvb1#
我在laravel5.5和mariadb 10.2中遇到了类似的问题。将某些用户输入t存储到varchar列时,出现异常:
sqlstate[22007]:无效的日期时间格式:1366不正确的字符串值:'\xe2\x80\x86y\xe2\x80…'用于第1行的列“comment”
将被抛出。
由于这种情况只发生在stage服务器上,而不发生在本地dev服务器上,因此我比较了下划线表的排序规则和字符集,发现stage服务器上的数据库和表使用lartin1,而本地dev服务器使用utf8mb64。
通过将数据库和表排序规则以及字符集更改为utf8mb64和utf864mb\u unicode\u ci,解决了这个问题。
对于遇到此问题的任何人,请检查数据库和表的排序规则和字符集。很可能laravel应用程序是用utf8编码的,而数据库使用的是其他东西。
dgtucam12#
如果mb convert encoding或utf8 encode不能解决此问题,请检查是否仅在多字节变体中使用字符串函数。
e、 g.代替
substr
你必须使用mb_substr
文档引用:多字节字符串函数写给未来的读者谁可能最终与我同样的问题:)
ergxz8rk3#
我解决了这个问题,将在insert之前生成这个错误的所有字符串列编码为uft-8。例如,生成错误的列是column name,我将其编码为show bellow。我还发现其他列有同样的错误,我也使用了这个解决方案。
pkmbmrz74#
BD
拉丁文1(和其他几个)编码½
(一半)。错误消息谈到将其存储在datetime中。所以,听起来至少有两个错误--不匹配
CHARACTER SETs
公式化较差的查询你给我们看一些关于
CREATE TABLE
,但为什么“英寸”会牵涉其中呢?t1qtbnec5#
只需在中更改数据库配置(字符集和排序规则)
配置/database.php
收件人: