【问题标题】:MySql Query Running in localhost but not in the Web ServerMySql 查询在 localhost 中运行但不在 Web 服务器中
【发布时间】:2014-05-30 07:33:08
【问题描述】:

我有一个类似这样的数据库表...

CREATE TABLE IF NOT EXISTS `example` (
  `id` varchar(78) COLLATE latin1_general_ci NOT NULL,
  `username` varchar(78) COLLATE latin1_general_ci NOT NULL,
  `password` varchar(78) COLLATE latin1_general_ci NOT NULL,
  `reg_date` date NOT NULL,
  `reg_time` time NOT NULL,
  `permission` varchar(78) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

现在我从 PHP 执行查询是 ...

INSERT INTO `example` (`id`, `username`, `password`, `reg_date`, `reg_time`, `permission`) VALUES ('j652hsL', 'example_user', 'secret', '', '', '');

此查询在我的本地主机中完美运行,当然有警告但在数据插入中没有问题...是的 reg_datereg_timepermissions 字段持有 0000-00-0000:00:00& @分别为987654328@...但是插入没有问题...现在这个相同的插入查询不在某个Web服务器上运行... 我有一个网络服务器,我在那里测试它运行没有错误但是当我转移到不同的网络服务器时它没有在那里运行......我认为这是某种服务器设置问题......但是可能会发生什么阻止它插入数据?

提前谢谢大家。

【问题讨论】:

  • 你是否有在mysql服务器上执行查询的必要权限
  • 你为什么不写下你得到的警告呢?那个mysql服务器在问题没有执行的地方给出了什么错误?还是我们应该猜测
  • 其他查询是否有效?连接成功了吗?
  • 是的...实际上,当我编写这样的查询时,我拥有必要的权限...INSERT INTO example`(idusernamepasswordreg_date,@ 987654334@, permission) VALUES ('j652hsL', 'example_user', 'secret', '0000-00-00', '00:00:00', 'read');`
  • 是的,连接成功...如果我没有输入permissions 值,则表示没有为权限设置默认值,并且当我没有在reg_date 中输入任何内容时& reg_time 它说语法错误...日期和时间格式不正确...

标签: php mysql sql


【解决方案1】:

检查您的本地服务器和网络服务器是否使用不同的SQL MODE。根据模式的严格程度,它会以不同方式处理零日期、默认值和其他内容。

要获得当前设置,请在两台服务器上运行 show variables like 'sql_mode'

【讨论】:

  • 是...旧服务器和本地主机有... sql_mode : NO_ENGINE_SUBSTITUTION
猜你喜欢
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 2014-07-14
  • 2011-01-20
  • 1970-01-01
相关资源
最近更新 更多