Răsfoiți Sursa

统一 sport_order.user_id 排序规则,修复订单列表 1267 报错

bot_sport_order.user_id 单独使用 utf8mb4_unicode_ci,与 bot_users.user_id(utf8mb4_general_ci)关联时,/admin/order/list 报 Illegal mix of collations。
新增迁移将该列改为库默认的 utf8mb4_general_ci,保留长度、非空、注释和索引。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
doge 20 ore în urmă
părinte
comite
093749648b

+ 26 - 0
database/migrations/2026_10_31_140000_align_sport_order_user_id_collation.php

@@ -0,0 +1,26 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Support\Facades\DB;
+
+/** sport_order.user_id 单独使用 utf8mb4_unicode_ci,与 users.user_id 关联时报 1267,统一为库默认排序规则。 */
+return new class extends Migration
+{
+    public function up(): void
+    {
+        $this->collate('utf8mb4_general_ci');
+    }
+
+    public function down(): void
+    {
+        $this->collate('utf8mb4_unicode_ci');
+    }
+
+    private function collate(string $collation): void
+    {
+        $grammar = DB::connection()->getQueryGrammar();
+        DB::statement('ALTER TABLE ' . $grammar->wrapTable('sport_order')
+            . ' MODIFY ' . $grammar->wrap('user_id')
+            . " VARCHAR(20) CHARACTER SET utf8mb4 COLLATE {$collation} NOT NULL COMMENT '用户ID'");
+    }
+};