我正在嘗試更改我的當前表,并且可以在我的遷移文件中使用SQL查詢來做到這一點,如下所示:<?php public function up() { Schema::table('xyz', function (Blueprint $table) { DB::statement('ALTER TABLE mydatabase.xyz CHANGE funding_needed funding_needed decimal(10, 2) NOT NULL DEFAULT 0.00 '); DB::statement('ALTER TABLE mydatabase.xyz CHANGE funding_received funding_received decimal(10, 2) NOT NULL DEFAULT 0.00 '); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('xyz', function (Blueprint $table) { DB::statement('ALTER TABLE mydatabase.xyz CHANGE funding_needed funding_needed varchar(191) NOT NULL '); DB::statement('ALTER TABLE mydatabase.xyz CHANGE funding_received funding_received varchar(191) NOT NULL DEFAULT 0'); }); }但是如果我這樣做,我會收到一個錯誤:<?php public function up() { Schema::table('xyz', function (Blueprint $table) { $table->decimal('funding_needed', 10, 2)->nullable(false)->default(0.00)->change(); $table->decimal('funding_received', 10, 2)->nullable(false)->default(0.00)->change(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('xyz', function (Blueprint $table) { $table->string('funding_needed', 191)->nullable(false)->default(false)->change(); $table->string('funding_received', 191)->nullable(false)->default(0)->change(); }); }錯誤:語法錯誤或訪問沖突: 1064 您的 SQL 語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以獲取在“字符集utf8mb4默認”0“附近使用的正確語法,而不是空排序,在第1行更改”(SQL:更改表xyz更改funding_needed funding_needed數字(10,2)字符集utf8mb4默認“0”不是空排序,更改funding_received funding_received數字(10, 2) 字符集 utf8mb4 默認“0”不為空排序規則utf8mb4_unicode_ciutf8mb4_unicode_ciutf8mb4_unicode_ci)我想用第二種方式來做,因為在生產中運行它。我不想修改生產遷移以匹配我的生產數據庫。
2 回答

慕田峪9158850
TA貢獻1794條經驗 獲得超7個贊
伙計們,我很難轉換,正如@echo評論中所說string
decimal
->charset(null)->change();
做了伎倆!
謝謝,伙計們節省了我的時間!
- 2 回答
- 0 關注
- 142 瀏覽
添加回答
舉報
0/150
提交
取消