首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >subsonic.migrations和Oracle XE

subsonic.migrations和Oracle XE
EN

Stack Overflow用户
提问于 2009-04-17 15:13:21
回答 2查看 539关注 0票数 0

也许我做错了什么,但它是这样的:

我正在尝试使用OracleXE版本10.2.0.1.0中的subsonic.migrations创建一个数据库。我已经安装了ODPv10.2.0.2.20。

这是我的app.config:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/>
  </configSections>

  <connectionStrings>
    <add name="test" connectionString="Data Source=XE; User Id=test; Password=test;"/>
  </connectionStrings>

  <SubSonicService defaultProvider="test">
    <providers>
      <clear/>
      <add name="test" type="SubSonic.OracleDataProvider, SubSonic" connectionStringName="test" generatedNamespace="testdb"/>
    </providers>
  </SubSonicService>

</configuration>

这是我的第一次迁移:

代码语言:javascript
复制
public class Migration001_Init : Migration {

        public override void Up() {

            //Create the records table
            TableSchema.Table records = CreateTable("asdf");
            records.AddColumn("RecordName");
       }

        public override void Down() {
            DropTable("asdf");
        }
    }

当我运行sonic.exe时,我得到了这个异常:

代码语言:javascript
复制
Setting ConfigPath: 'App.config'
Building configuration from D:\Users\carlucci\Documents\Visual Studio 2008\Projects\Wum\Wum.Migration\App.config
Adding connection to test
ERROR: Trying to execute migrate
Error Message: System.Data.OracleClient.OracleException: ORA-02253: especifica‡Æo de restri‡Æo nÆo permitida aqui

   at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
   at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
   at System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)
   at System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
   at SubSonic.OracleDataProvider.ExecuteQuery(QueryCommand qry) in D:\@SubSonic\SubSonic\SubSonic\DataProviders\OracleDataProvider.cs:line 350
   at SubSonic.DataService.ExecuteQuery(QueryCommand cmd) in D:\@SubSonic\SubSonic\SubSonic\DataProviders\DataService.cs:line 544
   at SubSonic.Migrations.Migrator.CreateSchemaInfo(String providerName) in D:\@SubSonic\SubSonic\SubSonic.Migrations\Migrator.cs:line 249
   at SubSonic.Migrations.Migrator.GetCurrentVersion(String providerName) in D:\@SubSonic\SubSonic\SubSonic.Migrations\Migrator.cs:line 232
   at SubSonic.Migrations.Migrator.Migrate(String providerName, String migrationDirectory, Nullable`1 toVersion) in D:\@SubSonic\SubSonic\SubSonic.Migrations\Migrator.cs:line 50
   at SubSonic.SubCommander.Program.Migrate() in D:\@SubSonic\SubSonic\SubCommander\Program.cs:line 264
   at SubSonic.SubCommander.Program.Main(String[] args) in D:\@SubSonic\SubSonic\SubCommander\Program.cs:line 90
Execution Time: 379ms

我做错了什么?

非常感谢您的帮助:)

安德烈·卡鲁奇

更新:正如安东所指出的,问题出在亚音速OracleSqlGenerator。它正在尝试使用以下sql创建架构表:

代码语言:javascript
复制
CREATE TABLE SubSonicSchemaInfo (
       version int NOT NULL CONSTRAINT DF_SubSonicSchemaInfo_version DEFAULT (0)
)

这在甲骨文上不起作用。正确的sql应该是:

代码语言:javascript
复制
CREATE TABLE SubSonicSchemaInfo (
  version int DEFAULT (0),
  constraint DF_SubSonicSchemaInfo_version primary key (version)
)

有趣的是,由于这是亚音速迁移执行的第一个sql,没有人在oracle上测试过它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-17 15:27:36

这只是个胡乱猜测(我不太清楚Oracle的确切CREATE TABLE语法):SubSonic试图创建一个"Schema Info“表(参见this,搜索private static void CreateSchemaInfo(string providerName)),默认值为"0”。在内部,它使用的OracleGenerator基本上就是一个ANSIGenerator,所以这可能是问题所在。

票数 1
EN

Stack Overflow用户

发布于 2009-04-17 18:26:58

这是我的错。我没有Oracle的许可证,也对它的工作原理一无所知。我试图做的(关于SQL生成)是一个基类,它生成符合ANSI标准的SQL (是啊,我知道-但一个人可以梦想),每个提供者可以根据需要调整虚拟方法。

Eric和其他人(使用Oracle)测试了大多数查询等-但您是对的-我们从来没有机会在Oracle上测试迁移。这是我的错,我要承担责任。我需要花一些时间来了解Oracle -或者找到一个愿意在这里投入更多时间的提交者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/760821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档