无效的日期时间格式:1366不正确的字符串值

7ajki6be  于 2021-06-24  发布在  Mysql
关注(0)|答案(5)|浏览(453)

我得到这个错误:
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。

kmb7vmvb

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,解决了这个问题。

ALTER DATABASE <db_name> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

对于遇到此问题的任何人,请检查数据库和表的排序规则和字符集。很可能laravel应用程序是用utf8编码的,而数据库使用的是其他东西。

dgtucam1

dgtucam12#

如果mb convert encoding或utf8 encode不能解决此问题,请检查是否仅在多字节变体中使用字符串函数。
e、 g.代替 substr 你必须使用 mb_substr 文档引用:多字节字符串函数
写给未来的读者谁可能最终与我同样的问题:)

ergxz8rk

ergxz8rk3#

我解决了这个问题,将在insert之前生成这个错误的所有字符串列编码为uft-8。例如,生成错误的列是column name,我将其编码为show bellow。我还发现其他列有同样的错误,我也使用了这个解决方案。

$data [
//key=>values 
];

$myModel = new MyModel(); 

$data['column-name'] = DB::connection()->getPdo()->quote(utf8_encode($data['column-name']));

$myModel->insert($data);
pkmbmrz7

pkmbmrz74#

BD 拉丁文1(和其他几个)编码 ½ (一半)。错误消息谈到将其存储在datetime中。所以,听起来至少有两个错误--
不匹配 CHARACTER SETs 公式化较差的查询
你给我们看一些关于 CREATE TABLE ,但为什么“英寸”会牵涉其中呢?

t1qtbnec

t1qtbnec5#

只需在中更改数据库配置(字符集和排序规则)
配置/database.php
收件人:

'connections' => [
        'mydb' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST'),
            'database' => env('DB_DATABASE'),
            'username' => env('DB_USERNAME'),
            'password' => env('DB_PASSWORD'),
            'charset'   => 'utf8mb4',              //**for emoticons**
            'collation' => 'utf8mb4_unicode_ci',   //**for emoticons**
        ],
]

相关问题