为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串更改为十进制拉维尔迁移

将字符串更改为十进制拉维尔迁移

PHP
九州编程 2022-09-25 20:15:54
我正在尝试更改我的当前表,并且可以在我的迁移文件中使用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 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

正如这个 Github 线程中所指出的,对于教义/dbal 包(即在运行此更新迁移之前安装的包),在更改列类型时存在一个错误。

同时使用 with 应作为解决方法,如链接所示。->charset(null)->change()


查看完整回答
反对 回复 2022-09-25
?
慕田峪9158850

TA贡献1794条经验 获得超8个赞

伙计们,我很难转换,正如@echo评论中所说stringdecimal

->charset(null)->change();做了伎俩!

谢谢,伙计们节省了我的时间!



查看完整回答
反对 回复 2022-09-25
  • 2 回答
  • 0 关注
  • 205 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号