mysql - SQL语法错误:两个不同的平台报不同的错误
问题描述
我正在尝试制作两个数据库表并将它们链接在一起。这是我的代码:
CREATE TABLE `NYSE_daily_prices_A` (
`StockSymbol` varchar(10) NOT NULL ,
`StockName` varchar(100) NOT NULL ,
`StockExchange` varchar(10) NOT NULL ,
PRIMARY KEY (
`StockSymbol`
)
);
CREATE TABLE `NYSE_stock_names` (
`StockExchange` varchar(10) NOT NULL ,
`StockSymbol` varchar(10) NOT NULL ,
`date` varchar(10) NOT NULL ,
`StockPriceOpen` money NOT NULL ,
`StockPriceHigh` money NOT NULL ,
`StockPriceLow` money NOT NULL ,
`StockPriceClose` money NOT NULL ,
`StockVolume` int NOT NULL ,
`StockPriceAdjClose` money NOT NULL
);
ALTER TABLE `NYSE_stock_names` ADD
CONSTRAINT `fk_NYSE_stock_names_StockSymbol`
FOREIGN KEY(`StockSymbol`)
REFERENCES `NYSE_daily_prices_A` (`StockSymbol`);
我尝试在 SQLiteStudio 中运行此脚本,它报告如下错误:
但是,我将脚本复制到 SQL Fiddle 并报告如下:
这真的让我很困惑。如何解决这个问题?提前致谢。
解决方案
从 SQLite 的ALTER TABLE:
SQLite 中的 ALTER TABLE 命令允许对现有表进行以下更改:可以重命名;可以添加一列;或者可以从中删除一列。
这意味着使用 SQLite,您不能将外键约束添加到现有表。
此外,没有varchar
或money
数据类型(它们分别被解释为TEXT
和NUMERIC
亲和),但这不是错误的来源。
在 Mysql 中没有money
数据类型。
您可以阅读此线程以获取替代方案:Best data type to store money values in MySQL
如果删除反引号,您的代码在 SQL Server 和 Postgresql 中有效,但在 MySql 和 SQLite 中无效。
推荐阅读
- php - 音频自动播放无限次重复html5
- android - ExpandableListView 重复 ID 问题 - 如何解决?
- c# - 计算句子中单词数的控制台应用程序。(C#)
- mysql - SQL 迁移。保留旧 ID 不起作用
- php - 使用PHP将Json嵌套数组到Mysql中
- python - Pytest 没有从目录中选择所有测试
- wordpress - 通过 URL GET 参数每页的 WordPress 帖子
- apache-zookeeper - 在 zookeeper 提案请求阶段,follower 节点是否刷新请求到磁盘?
- ios - 推送视图控制器后导航栏不会显示
- javascript - 根据特殊选择的选定选项选择多选的相关选项