java - 查询在 mysql 和 php 中运行良好,但在 java 中运行不正常

标签 java php mysql

我在 PHP 中有以下 mysql 查询,它工作正常。

$strUpdate = "INSERT INTO  `batchfolder`.`newbatch` (`BatchID` ,`Batch` ,`barcode` ,`PG`)VALUES (NULL ,  '',  '1',  '')";

当我直接在数据库中运行它时也很好。

但是当我在 java 中运行它时,

 try {
          conn = DriverManager.getConnection (url, userName, password);
          Statement st = conn.createStatement();
          st.execute("INSERT INTO  `batchfolder`.`newbatch` (`BatchID` ,`Batch` ,`barcode` ,`PG`)VALUES (NULL ,  '',  '1',  '')");            
          st.close();
}

它给出了以下错误。

Exception in thread "main" java.sql.SQLException: Field 'Pre' doesn't have a default value

Pre 是数据库中的下一行,它没有默认值。

我的问题是,这个查询如何在 mysql 和 php 中正常运行。

P.S BatchID 是新批处理中的 int(10) 自动递增值。

这是我的表结构。

CREATE TABLE IF NOT EXISTS `newbatch` (
  `BatchID` int(10) NOT NULL AUTO_INCREMENT,
  `Batch` varchar(100) NOT NULL,
  `barcode` varchar(5) NOT NULL,
  `Ly` varchar(5) NOT NULL DEFAULT '0',
  `PG` varchar(5) NOT NULL,
  `Pre` varchar(5) NOT NULL,
  `Flu` varchar(5) NOT NULL,
  `FluID` varchar(100) DEFAULT NULL,
  `DateCreated` varchar(100) DEFAULT NULL,
  `Comments` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`BatchID`),
  UNIQUE KEY `FluID` (`FluID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000160 ;

最佳答案

您绝对确定这确实在 PHP 中运行吗?您可能只是没有看到错误消息。

再试一次 display_errors = 'on'error_reporting(E_ALL | E_STRICT); 这是一个 SQL 错误,它不依赖于驱动程序。驱动程序只是向您显示消息。

更新: 看起来 Java 出于某种原因正在关闭 MySQL 的严格模式。唯一(据我所知)应该能够导致这种行为的是 MySQL 严格模式被关闭。

If strict mode is not enabled, MySQL sets the column to the implicit default value for the column data type.

您可以通过SELECT @@GLOBAL.sql_mode; 检查您的服务器运行的模式。在 Java 和 PHP 中尝试。如果结果不同,那就是你的答案。

更新 2: Jep!

关于java - 查询在 mysql 和 php 中运行良好,但在 java 中运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842451/

相关文章:

java - 有序数组删除操作——大O分析

java - 一些 Android 手机在屏幕底部和右侧切断 UI

java - 如何在 Maven 过滤后验证 XML?

mysql - 选择属于一个主机的所有项目

php - 为什么这个php和MySQL不显示结果

java - 如何根据用户时区获取日历日期和时间

php - Eclipse PDT 自动实现接口(interface)方法

php - 如何在php中将不同时区的日期和时间转换为GMT时间

javascript - 来自 PHP 的 echo-ed HTML 元素未在 JAVASCRIPT 中读取

php - 如何使用codeigniter将图像保存到mysql中?