我正在寻找可以使用 psql 查询语句发送一些数据的方法。例如:
insert into mytable (id,name,site_id) values (default,'test',1);
mytable的真实结构:
id
name
在变量的帮助下,site_id
我想传递它的值以便在触发器中使用它。在触发器中:
if new.site_id=1 then
...
else
...
如果上面还有其他方法可以请您指教。
我正在寻找可以使用 psql 查询语句发送一些数据的方法。例如:
insert into mytable (id,name,site_id) values (default,'test',1);
mytable的真实结构:
id
name
在变量的帮助下,site_id
我想传递它的值以便在触发器中使用它。在触发器中:
if new.site_id=1 then
...
else
...
如果上面还有其他方法可以请您指教。
我有一个用于插入的巨大插入 sql 脚本,并且这个插入在 MySQL 5.5 版本中是可能的,但在 Mysql 8 中不是:
CREATE TABLE IF NOT EXISTS `accounts` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NickName` varchar(24) CHARACTER SET cp1251 COLLATE cp1251_general_cs NOT NULL,
`Password` varchar(64) NOT NULL DEFAULT 'NULL',
`RegIP` varchar(16) NOT NULL DEFAULT 'No IP Adress',
`OldIP` varchar(16) NOT NULL DEFAULT 'No IP Adress',
`CheckIP1` varchar(16) NOT NULL DEFAULT 'No IP Adress',
`RegData` varchar(16) NOT NULL DEFAULT 'No IP Adress',
`Referal` varchar(24) NOT NULL DEFAULT 'No Referal',
`Mail` varchar(50) NOT NULL DEFAULT 'No Mail Adress',
`Telephone` varchar(20) NOT NULL DEFAULT 'No Telephone',
`ForumName` varchar(30) NOT NULL DEFAULT 'No Forum Name',
`Level` int(11) NULL,
`Exp` int(11) NULL,
... more than 150 columns
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;
我试图通过将其设置为来禁用所有 sql 模式:--sql-mode="NO_ENGINE_SUBSTITUTION"
。然后我在数据库中检查并设置了它,即使在此之后它也不起作用。之前有太多的模式,比如strict_trans_tables
等等。
然后游戏在日志中返回:
[错误] CMySQLQuery::Execute[OnPlayerRegisterMysql] -(错误 #1364)字段“Exp”没有默认值:
(Query: "INSERT INTO `accounts` (`ID`,`NickName`,`Password`,`RegIP`,`CheckIP1`,`RegData`,`Level`,`Sex`,`Age`,`Race`,`Referal`,`Mail`,`Telephone`,`Money`,`Bank`,`HouseKey`,`BizKey`,`From
`,`OOC`,`Snow`, `VirMoney`, `Online_status`,`Online`) VALUE (NULL,'Jonny_Sky', 'password', '0.0.0.0', 'No IP Adress', '2021-7-23', '1', '1', '0', '0'
, 'No Referal', 'No Mail Adress', 'No Telephone', '10000000', '0', '-1', '-1', '-1', '0', '1', '10000', '1001', '3')")
MySQL 8 中是否有任何设置允许此类插入?正如我提到的,一切都在 MySQL 5.5 中运行。
更新:
我不明白 MySQL 5.5,6 到 8 的版本有什么区别。工作游戏脚本在迁移到 8 后停止工作。即使我进行了另一个工作转储(相信如果我错了),那么同样 - Mysql 8 抱怨插入如所示。此外,我什至将所有NOT NULL
没有默认值的字段更改为NULL
. 即使在那里,也没有运气。
致nbk:谢谢,看来我可能错过了那一步,我不知道。我必须了解升级过程。然后我会回来报告。换句话说,我知道必须对某些类型的数据库(Sybase)进行升级,但很困惑,相信不是 MySql 8。所有其他转储(cms,网站)在 MySQL 8 上无需升级即可工作。