gpt4 book ai didi

mysql不能插入是因为没有默认值?

转载 作者:可可西里 更新时间:2023-11-01 06:27:51 24 4
gpt4 key购买 nike

我有两个具有完全相同架构的表。我可以插入一张 table ,但不能插入另一张 table 。失败的提示没有默认值。这是我为表创建的语句

CREATE TABLE `t_product` (
`product_id` varchar(10) NOT NULL,
`prod_name` varchar(150) DEFAULT NULL,
`price` decimal(6,2) NOT NULL,
`prod_date` date NOT NULL,
`prod_meta` varchar(250) DEFAULT NULL,
`prod_key` varchar(250) DEFAULT NULL,
`prod_desc` varchar(150) DEFAULT NULL,
`prod_code` varchar(12) DEFAULT NULL,
`prod_price` decimal(6,2) NOT NULL,
`prod_on_promo` tinyint(1) unsigned NOT NULL,
`prod_promo_sdate` date DEFAULT NULL,
`prod_promo_edate` date DEFAULT NULL,
`prod_promo_price` decimal(6,2) NOT NULL,
`prod_discountable` tinyint(1) unsigned NOT NULL,
`prod_on_hold` tinyint(1) unsigned NOT NULL,
`prod_note` varchar(150) DEFAULT NULL,
`prod_alter` varchar(150) DEFAULT NULL,
`prod_extdesc` text,
`prod_img` varchar(5) NOT NULL,
`prod_min_qty` smallint(6) unsigned NOT NULL,
`prod_recent` tinyint(1) unsigned NOT NULL,
`prod_name_url` varchar(150) NOT NULL,
`upc_code` varchar(50) DEFAULT NULL,
PRIMARY KEY (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

当我在 database1 中运行这条语句时,它成功地插入了:

insert into t_product (product_id) values ('jlaihello');

当我在 database2 中运行这个确切的语句时,我得到了错误:

ERROR 1364 (HY000): Field 'price' doesn't have a default value

为什么这个错误只发生在 database2 中?据我所知,database1 和 database2 之间的区别是:

数据库 1 使用 mysql Ver 14.14 Distrib 5.5.53,debian-linux-gnu (i686) 使用 readline 6.3

数据库 2 使用 mysql Ver 14.14 Distrib 5.7.16,用于 Linux (x86_64) 使用 EditLine 包装器

如何使数据库 2 的行为像数据库 1?

编辑有数百个表受此影响。基本上我们正在将数据库移到新服务器上。我从 db1 做了一个 mysqldump,然后导入到 db2。 t_product 只是受此影响的表之一。我想避免手动修改数百个表的架构。我更喜欢使 db2 表现得像 db1 的“简单开关”。

最佳答案

错误 1364 (HY000):字段“价格”没有默认值

price decimal(6,2) NOT NULL,

将价格设置为空或分配默认值

编辑:

这是由 STRICT_TRANS_TABLES SQL 模式引起的。

打开 phpmyadmin 并转到 More 选项卡并选择 Variables 子菜单。向下滚动以查找 sql 模式。编辑 sql 模式并删除 STRICT_TRANS_TABLES 保存。

您可以在您的数据库管理工具中运行 SQL 查询,例如 phpMyAdmin:

-- verify that the mode was previously set:
SELECT @@GLOBAL.sql_mode;
-- update mode:
SET @@GLOBAL.sql_mode= 'YOUR_VALUE';

在 mysql conf 文件中找到看起来像这样的行:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

注释掉上面的行并重启mysql服务器

关于mysql不能插入是因为没有默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41077044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com