好的,这会有点复杂。
但是现在我正在使用一个自己编写的函数来创建一个查询,用于在数据库中创建、插入页面。
我想知道是否有更聪明的方法来实现灵活的"insert into“方法。
问题是,在创建页面时,我有一些字段是可选的,所以现在我正在运行所有字段并检查它们是否已设置。:
//creates an Array which can be used to make a MySQL query
function createQueryArray($new) {
if (isset($this->users_id))
$this->query_array[&
我最近升级了本地wampserver,因此更新了MySQL。他们默认启用的严格模式给我带来了一些麻烦。
添加默认值的要求(对我来说有点过了)。但我是谁)对我来说是个大问题。
我创建的系统停止工作,因为这使我的整个操作停止了。
我所犯的错误:
字段'pageoptions_description‘没有默认值
现在,我添加了一个默认值:
ALTER TABLE `serene_pageoptions`
CHANGE `pageoptions_description` `pageoptions_description`
TEXT CHARACTER SET latin1 COLL
在mysql 5.7.28中,我创建了如下表:
create table t1 (
id int not null,
d1 timestamp)
engine=innodb;
它可以很好地工作,并将d1与default value current_timetamp、on update current_timestamp一起创建为non-null。
但是,当我尝试使用两个时间戳字段创建相同的表时,如下所示:
create table t1 (
id int not null,
d1 timestamp,
d2 timestamp)
engine=innodb;
我收到一个错误:
SQL (1
作为背景,我们在工作中使用ZendFramework2和Doctrine。教义总是为我们自己不存在的价值观插入NULL。通常,这是可以的,就好像字段有一个默认值一样,那么它应该用这个默认值填充该字段。
对于运行MySQL 5.6.16的服务器之一,下面这样的查询运行并执行良好。虽然NULL被插入到一个不可为空的字段中,但MySQL在insert上使用其默认值填充该字段。
在另一个运行MySQL 5.6.20的服务器上,我们运行下面的查询,因为它抱怨'field_with_default_value‘不能为null。
INSERT INTO table_name(id, field, f
我在mysql中创建了一个表
create table test (id int primary key not null auto_increment, vs varchar(255) not null);
跑时
insert into test (vs) values (null);
它抛出一个错误:
ERROR 1048 (23000): Column 'vs' cannot be null
但是当我试图插入两行
insert into test (vs) values (null),(null);
它起了作用,其结果是:
mysql> select * from
我正试图通过前向工程来创建一个模式,一个模型eer图。但是,当使用默认的current_timestamp时,它会给datetime字段带来一个错误,在mysql 8中,datetime字段是允许的。
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE,
在mysql (Ubuntu13.10,MySql 5.5)中,我试图创建一个表,该表将使用以下代码自动创建一个随机字母数字ID:
create table YGraph (
YGraphEdgeId CHAR(8) NOT NULL PRIMARY KEY DEFAULT SUBSTRING(MD5(RAND()) FROM 1 FOR 8),
YGraphStartVertex CHAR(6) NOT NULL,
YGraphEndVertex CHAR(6) NOT NULL
);
但是phpmyadmin在抱怨:
#1064 - You have an erro
我使用LOAD DATA INFILE将CSV导入到MySQL表中。表的一个字段存储邮政编码数据,这是我在表结构contributor_zipcode INT中定义的。
在CSV中,此字段有时为空。当我执行LOAD查询时,MySQL将抛出如下警告:
Incorrect integer value: '' for column 'contributor_zipcode' at row 180
我尝试将该字段重新定义为contributor_zipcode INT DEFAULT '0'和contributor_zipcode INT DEFAULT
我希望将表A复制到表B中,而不声明MySQL中的所有字段。
但问题是我的表B在开头有一个自动增量字段,名为id。
table_A
name age etc
-------|--------|--------|
abc | 28 | ... |
table_B
id name age etc
-------|-------|--------|--------|
我试着做这样的事情:
INSERT INTO table_B SELECT auto, * FROM table_A
但没起作用。什么是最好的解决方案?